MVC中的下拉列表

时间:2009-11-20 09:02:51

标签: asp.net-mvc drop-down-menu

我是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是外键。

请告诉我该怎么做。

3 个答案:

答案 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”] 访问。