Ric*_*ick 6 asp.net-mvc strongly-typed-view c#-4.0 asp.net-mvc-3 drop-down-menu
我是MVC的新手,所以也许这是一个愚蠢的问题 - 我正试图在asp.net mvc中了解强类型视图.我正在开发第3版.如果我有一个包含2个模型的项目 - 比如人和部门.一个人必须属于一个部门.所以我有我的部门模型(我已经生成了我的控制器和CRUD界面):
public class Department
{
public int Id { get; set;}
public string DeparmentName { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个引用Department部门的Person模型:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Department_Id { get; set; }
[ForeignKey("Department_Id")
public virtual Department Department { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在我生成我的控制器和视图.现在,当我查看PersonController时,我对Create有以下内容:
public ActionResult Create()
{
ViewBag.Department_Id = new SelectList(db.Deparments, "Id", "DepartmentName");
return View();
}
Run Code Online (Sandbox Code Playgroud)
在Person\Create.cshtml中,创建Department下拉列表的代码是
@Html.DropDownList("Department_Id", String.Empty)
Run Code Online (Sandbox Code Playgroud)
据我了解,DropDownList Html助手正在使用ViewBag来创建我的下拉列表.但是,FirstName和LastName似乎在不依赖ViewBag的情况下创建了输入字段 - 所以在我的View中,我可以对我的FirstName和LastName字段进行编译时检查,因为我的视图是强类型的,但不在我的DropDownList上.
有没有理由为部门DropDownList没有强烈输入或我做错了什么并且有一种方法可以强力输入?
谢谢 :)
您需要一个视图包的原因是因为您的视图绑定的Person实例没有所有可能部门的数据,只有它所属的一个部门.这一行会发生什么:
ViewBag.Department_Id = new SelectList(db.Deparments, "Id", "DepartmentName");
Run Code Online (Sandbox Code Playgroud)
是否所有来自数据库的部门都被添加到选择列表(用于DropDown绑定),其中Id为关键字,而DepartmentName为值.将视图绑定到Person后,下拉列表将显示相应的Department.
| 归档时间: |
|
| 查看次数: |
4492 次 |
| 最近记录: |