我在 MVC3 中有我的用户模型:
public class User
{
[Key]
public virtual Guid UserId { get; set; }
[Required]
public virtual String Username { get; set; }
[DataType(DataType.MultilineText)]
public virtual String Comment { get; set; }
..loads of other properties
此类包含大量我在编辑屏幕中并不真正需要的信息。假设我只想编辑comment
. user
我试图创建一个这样的视图模型,但不确定我是否正确
查看模型
public class UserViewModel
{
public string notes;
}
现在我的控制器中有这个:
public ActionResult Edit(Guid id)
{
User user = Context.Users.Where(x => x.UserId == id).First();
UserViewModel uvm = new UserViewModel();
uvm.notes = user.Comment;
return View(uvm);
}
这部分似乎工作正常,如果信息存在则传递信息。编辑视图是这样的:
@model core.Areas.Manage.Models.UserViewModel
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>User Edit</legend>
@Html.TextBoxFor(model => model.notes)
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
其中显示来自控制器的注释/评论。但是,如果我按提交,则模型为空- 此时model.notes
为空:
[HttpPost]
public ActionResult Edit(Guid id, UserViewModel model)
{
我做错了什么吗?过去我只是简单地传递了整个模型,但这并不理想。我有点在黑暗中刺伤,只是想在转向 SO 之前我会尝试自己实现它!