Как сохранить выпадающий список ID od в базе данных
Привет всем, я просто новичок, и у меня есть проблема с моим выпадающим списком:(MVC, ASP.NET)
Сценарий:
> В поле вид при выборе выпадающего списка отображается значение (название категории)
> в контроллере вместо (имя категории) он будет распознавать только присвоенный идентификатор определенному значению
Проблема:
> Когда он нажимает кнопку Сохранить, возвращаемое значение из выпадающего списка равно NULL
> Затем в таблице категорий он создает еще одну строку с пустым содержимым
Модель: (Поставщик)
public class Supplier { public int Id { get; set; } public string SupplierCode { get; set; } public string SupplierName { get; set; } public int SupplierContact { get; set; } public Category Category { get; set; } }
Модель: (Категория)
public class Category { public int Id { get; set; } public string CatName { get; set; } }
Контроллер (Поставщик)
public ActionResult New() { var CategoryMenu = _SBC.Categorys.ToList(); var NewContent = new SupplierandCategoryViewModel() { CategoryModel = CategoryMenu, }; return View(NewContent); }
public ActionResult Save(SupplierandCategoryViewModel Supply) { var DSupply = new Supplier() { SupplierName = Supply.SupplierModel.SupplierName, SupplierCode = Supply.SupplierModel.SupplierCode, SupplierContact = Supply.SupplierModel.SupplierContact, Category = Supply.CategoryModel //this part is error; it cannot recognize }; _SBC.Suppliers.Add(DSupply); _SBC.SaveChanges(); return View(); }
Вид: (Поставщик)
@model ShoeInformation.ViewModel.SupplierandCategoryViewModel @{ ViewBag.Title = "New"; Layout = "~/Views/Shared/_Layout.cshtml"; } <br /> <br /> <h2>Create New Customer</h2> <br /> <br /> @using (Html.BeginForm("Save", "Supplier")) { <div class="form-group"> @Html.LabelFor(x=>x.CategoryModel) @Html.DropDownListFor(x => x.CategoryModel, new SelectList(Model.CategoryModel,"Id","CatName"), "Select Supplier Category", new {id="myCat",@class="form-control" }) </div> <div class="form-group"> @Html.LabelFor(x=>x.SupplierModel.SupplierCode) @Html.TextBoxFor(x => x.SupplierModel.SupplierCode, new { @class="form-control"}) </div> <div class="form-group"> @Html.LabelFor(x=>x.SupplierModel.SupplierName) @Html.TextBoxFor(x => x.SupplierModel.SupplierName, new { @class="form-control"}) </div> <div class="form-group"> @Html.LabelFor(x=>x.SupplierModel.SupplierContact) @Html.TextBoxFor(x => x.SupplierModel.SupplierContact, new { @class="form-control"}) </div> }
модель представления: (
SupplierandCategoryViewModel)
public class SupplierandCategoryViewModel { public IEnumerable<Category> CategoryModel { get; set; } public Supplier SupplierModel { get; set; } }
Я хочу сохранить идентификатор категории, но в представлении(индексе) он должен отображать значение ID, а не сам идентификатор
Спасибо за ваш ответ!!
Что я уже пробовал:
Я пытаюсь использовать модель предложения, но проблема в том, что она не может перечислить содержание категории
F-ES Sitecore
Только значение выпадающего списка передается вместе с формой, именно так работает html. Если вам нужен связанный текст, то вам нужно будет найти его в своей базе данных, поэтому выполните поиск или выберите в таблице _SBC.Categorys, чтобы получить соответствующую запись для этого идентификатора и прочитать значение из результата.
Возможно, вы также захотите пересмотреть архитектуру своей базы данных, чтобы это был только идентификатор, который вы храните в таблице поставщиков, а не текст категории. Именно так обычно создаются базы данных, это помогает с поиском или фильтрацией данных позже.