多年来我一直使用 Webforms 开发 ASP.Net 应用程序,并且完成了一些 MVC 应用程序,但从未真正完整地使用过该框架,这是由于大多数项目的时间限制。虽然,我使用的是 MVC 结构,但我仍然使用旧的方法,即不使用 @Html.BeginForm 等,而是使用标签等。
我最近刚刚开始另一个项目,但这次我想使用正确的 MVC 功能。
我一直在阅读有关设计模式的最佳实践。在我的解决方案中,我有用于 MVC 应用程序、测试和数据的项目(这是一个连接到数据库的类库)。我没有使用实体框架,但我仍然想知道为视图模型创建类的正确方法。
在我的数据库课程上,我有一个名为“用户”的课程
public class User
{
public long Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
[Required]
public long RoleId { get; set; }
}
我想要在视图上呈现的字段是名称、电子邮件和 RoleId 的下拉列表。那么对于视图上的模型,它不必与我的数据类相同是否正确?下面是正确的模型视图类吗?
public class UserModel
{
public Data.User User { get; set; }
public IEnumerable<KeyValuePair<long,string>> RoleList { get; set; }
}
提出这个问题的原因是,最初,我总是假设模型类应该与你的数据类相同,我在谷歌中读到的数据类在大多数情况下并非如此。它是否正确?
这是视图的正确实现吗?
@using (Html.BeginForm())
{
@Html.LabelFor(m=>m.User.Name)
@Html.TextAreaFor(m=>m.User.Name)
<br/>
@Html.LabelFor(m => m.User.Email)
@Html.TextAreaFor(m => m.User.Email)
<br />
@Html.LabelFor(m => m.User.RoleId)
@Html.DropDownListFor(m => m.User.RoleId, new SelectList(Model.RoleList,
"Value", "Key"),"--Please Select--")
}