ASP.NET MVC возвращает 0 для раскрывающегося списка перечисления управления формой при создании элементаC#

Место общения программистов C#
Anonymous
ASP.NET MVC возвращает 0 для раскрывающегося списка перечисления управления формой при создании элемента

Сообщение Anonymous »

Создаю тестовый проект ASP.NET/MVC и пытаюсь добавить раскрывающийся список категорий из перечисления внутри формы отправки, чтобы создать продукт. Категории отображаются в раскрывающемся списке точно, но они не соответствуют модели, и вместо этого я получаю 0.
Вот мой код

Код: Выделить всё

public enum Category
{
Electronics = 1,
Clothing,
Home,
Kitchen,
Beauty
}

Код: Выделить всё

public class Product
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Required]
public string Name { get; set; }

[Required]
public string Description { get; set; }

[Required]
public decimal Price { get; set; }

[Required]
public Category Category { get; set; }

public DateTime CreatedDate { get; set; }

public DateTime? UpdatedDate { get; set; }
}

Код: Выделить всё

Name

Description

Price

Category
@Html.EnumDropDownListFor(
x => x.Category,
"Select Category",
new { @class = "form-control" })


Код: Выделить всё

[HttpGet]
public async Task Create()
{
var enumData = from Category c in Enum.GetValues(typeof(Category))
select new
{
ID = (int)c,
Name = c.ToString()
};
ViewBag.EnumList = new SelectList(enumData, "ID", "Name");
return View();
}

[HttpPost]
public async Task CreateProduct(Product product)
{
try
{
string data = JsonConvert.SerializeObject(product);
StringContent content = new StringContent(data, Encoding.UTF8, "application/json");
HttpResponseMessage response = _client.PostAsync(_client.BaseAddress + "/CreateProduct", content).Result;
if (response.IsSuccessStatusCode)
{
TempData["successMessage"] = "Product created successfully!";
return RedirectToAction("Products");
}
return View("ErrorPage");
}
catch (Exception ex)
{
TempData["errorMessage"] = ex.Message;
return View("ErrorPage");
}
}
Попробовал несколько разных способов настройки представления, хотя, возможно, я путаю свои версии. Пробовал использовать DropDownList и Html.GetEnumSelectList вместо EnumDropDownListFor.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-an-item

Вернуться в «C#»