我是MVC应用程序的新手。我想在我的表单上有一个下拉列表我已经这样做了
"<%= Html.DropDownList("Categories", (IEnumerable<SelectListItem>)ViewData["Categories"])%>"
我从控制器类文件发送viewdata[Categories]
。
这样
IList allCategories = _dropdownProvider.GetAllCategories();
ViewData["Categories"] = new SelectList(allCategories, "catid", "catname");
现在我的要求是,当用户从下拉列表中选择特定类别时,其id应插入数据库中, 主要问题是类别ID我想在产品表中插入类别ID,其中类别Id是外键。
请告诉我该怎么做。
答案 0 :(得分:2)
通常您会执行以下操作: -
在你的观点上,你会......
Inherits="System.Web.Mvc.ViewPage<Product>" THIS IS A REFERENCE TO YOUR PRODUCT ENTITY
在页面中你可以这样做......
Category <%=Html.DropDownList("CatId") %>
您还可以使用定义列表的GET控制器
public ActionResult Add()
{
ViewData["CatId"] = new SelectList(allCategories, "catid", "catname");
然后您可以从传入Add product的产品中获取CatId
e.g。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(Product product)
{
int catId = product.CatId
HTH。你应该买一本关于这个主题的书,因为MVC带走了很多你绑定的痛苦。
答案 1 :(得分:0)
当您尝试发布视图时,您的查询字符串中将包含“类别”键。您可以将其转换为long或您在表中使用的类型,并将其设置为您想要的产品实例。
如果不太清楚,请发送您的代码以获得更好的解释。
答案 2 :(得分:0)
如果我理解你的问题,你唯一需要做的就是检查POST的“类别”键,它将包含DropDownList的选定值。
var selectValue = System.Convert.ToInt16(Request.Form["name"]);
或者,如果您使用ModelBinder并定义直接绑定该值的模型,则只需使用
更新模型bool x = TryUpdateModel(YourModelNameHere);
这将自动检查当前Controller的Value Provider并将该值绑定到模型中的相应属性。
我在你的控制器中重新使用参数 FormCollection ,并设置一个断点,你可以看到POST中发送的所有值。所有这些值都可以通过 Request.Form [“KEY”] 访问。