Как создать комплекс «Создать» ActionResult в MVC

1

Я очень новичок в MVC и пытаюсь сделать проект. У меня есть модель продукта, созданная из базы данных. Он обладает такими свойствами, как ниже (теперь я пишу все свойства.)

Product
-------
ID(int)
CODE(string)
CATEGORY_ID(int)

Categories
-------
ID(int)
CODE(string)

Я создал Create ActionResult для продукта. И поскольку CATEGORY_ID является целым числом в базе данных, Visual Studio создала текстовое поле для CATEGORY_ID. Я хочу, чтобы это был dropdownlist, который отобразит все категории из таблицы Categories. Но когда пользователь нажмет кнопку "Сохранить", он будет записывать целочисленное значение выбранной категории в таблицу Product.

Как я могу сделать этот dropdownlist? Как передать все категории в Product Create ActionResult?

  • 0
    Вам нужно создать модель.
  • 1
    Вы спрашиваете слишком широко
Показать ещё 4 комментария
Теги:
asp.net-mvc
asp.net-mvc-4

2 ответа

1
Лучший ответ

Вы хотите использовать ViewModel для формирования вашей модели БД в целях презентации.

0

В классе модели Продукт добавьте следующее,

[NotMapped]
    public SelectList Categories { get; set; }

в поле зрения добавить

@Html.DropDownListFor(model => model.CategoryID, Model.Categories, "--Select--", new { @id="drpCommodity"})   

заполнить Категории при использовании следующих

public static SelectList GetDropDownList<T>(List<T> objects, string value, string text)
    {
        List<SelectListItem> items = new List<SelectListItem>();
        //var defaultItem = new SelectListItem();
        //defaultItem.Value = Convert.ToString(-1);
        //defaultItem.Text = "--Select--";
        //defaultItem.Selected = true;
        //items.Add(defaultItem);

        List<SelectListItem> lst = objects
                .Select(x =>
                        new SelectListItem
                        {
                            Value = x.GetType().GetProperty(value).GetValue(x).ToString(),
                            Text = x.GetType().GetProperty(text).GetValue(x).ToString()
                        }).ToList();

        items.AddRange(lst);
        return new SelectList(items, "Value", "Text");
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню