从这里开始阅读:ASP.NET MVC
SelectCategory控制器内部已创建操作-
public ActionResult SelectCategory() {
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "Action", Value = "0"});
items.Add(new SelectListItem { Text = "Drama", Value = "1" });
items.Add(new SelectListItem { Text = "Comedy", Value = "2", Selected = true });
ViewBag.MovieType = items;
return View();
}
Run Code Online (Sandbox Code Playgroud)
我无法理解以下行中数据的绑定.
@Html.DropDownList("MovieType")
Run Code Online (Sandbox Code Playgroud)
虽然以类似的方式绑定数据,
@Html.DropDownList("IdList");
Run Code Online (Sandbox Code Playgroud)
我获得以下错误 -
没有类型为'IEnumerable'的ViewData项具有键'IdList'.
控制器动作:
public ActionResult SelectId()
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "MyId1", Value = "MyId1", Selected=true });
items.Add(new SelectListItem { Text = "MyId2", Value = "MyId2" });
ViewBag.IdList = items;
return View();
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?谢谢您的帮助 !
Dar*_*rov 22
你有ViewBag.MovieType使用@Html.DropDownList("MovieType")下拉列表设置=> 将使用此值.在编写时@Html.DropDownList("IdList"),帮助程序IdList在ViewBag中找不到相应的属性并抛出错误,因为它不知道从何处绑定数据.
或者,如果要更改下拉列表的名称,可以使用以下内容:
@Html.DropDownList("SelectedMovieType", (IEnumerable<SelectListItem>)ViewBag.MovieType)
Run Code Online (Sandbox Code Playgroud)
并且您的POST操作将有一个SelectedMovieType参数来检索所选值.
但我会避免使用ViewBag.定义视图模型更好:
public class MyViewModel
{
public string SelectedMovieType { get; set; }
public IEnumerable<SelectListItem> MovieTypes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后让控制器操作填充此视图模型并将其传递给视图:
public ActionResult SelectId()
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "MyId1", Value = "MyId1", Selected=true });
items.Add(new SelectListItem { Text = "MyId2", Value = "MyId2" });
var model = new MyViewModel
{
MovieTypes = items
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
并在您的强类型视图中:
@model MyViewModel
@Html.DropDownListFor(x => x.SelectedMovieType, Model.MovieTypes)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53028 次 |
| 最近记录: |