Asp.net mvc Html.DropdownList实际上是如何绑定的?
因此,我正在学习MVC/Razor,我不知道这是如何工作的 在Create方法中Asp.net mvc Html.DropdownList实际上是如何绑定的?,asp.net-mvc,razor,Asp.net Mvc,Razor,因此,我正在学习MVC/Razor,我不知道这是如何工作的 在Create方法中 ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name"); 我在这一页上有 @Html.DropDownList("GenreId", String.Empty); 这是有效的。我感到困惑的是ViewBag和对象属性之间的差异 所以我可以把第一行改成 ViewBag.x= new SelectList(db.Genres, "GenreId",
ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name");
我在这一页上有
@Html.DropDownList("GenreId", String.Empty);
这是有效的。我感到困惑的是ViewBag和对象属性之间的差异
所以我可以把第一行改成
ViewBag.x= new SelectList(db.Genres, "GenreId", "Name");
及
但当然它不会绑定回对象,所以当我可能不希望列表名称与对象属性的名称相同时,为字段设置下拉列表的正确方法是什么
我想我们可以直接从Request.Form对象中获取值,但是这种方法会影响模型绑定的整个过程。dropdownlist帮助程序会在传递字符串的情况下自动搜索选择列表
@Html.DropDownList("x", String.Empty);
生成的下拉列表将有name=“x”和id=“x”。您发布到的任何操作方法都将收到一个名为“x”的参数
另一方面,如果您想区分绑定参数的名称并选择List,则可以使用DropDownList重载
Html.DropDownList("Genres", (IEnumerable<SelectListItem>) ViewBag.GenresList)
Html.DropDownList(“流派”,(IEnumerable)ViewBag.GenresList)
我认为viewbag是一个动态对象,在上面问题的上下文中,viewbag.x可以达到这个目的。我尝试在控制器端设置以下内容
Album album = db.Albums.Find(id);
ViewBag.x = new SelectList(db.Genres, "GenreId", "Name",album.GenreId);
在视图的末尾检索值时使用以下命令,我没有遇到任何问题
@Html.DropDownList("x","Please Select a Value")
@Html.ValidationMessageFor(model => model.GenreId)
我得到了最后一条语句,我可以检索
Request.Form[“x”]
,但是否有Html助手说:使用x作为下拉列表的数据源,但在选择后将selectValue绑定到属性yi如果我理解正确,您可以使用超负荷的Html.DropDownList(“Genres”,(IEnumerable)ViewBag.GenresList)
@Html.DropDownList("x","Please Select a Value")
@Html.ValidationMessageFor(model => model.GenreId)