【发布时间】:2015-03-07 21:03:30
【问题描述】:
我有一个显示单个项目及其所有字段的视图。但是我很困惑试图弄清楚如何允许从这个视图更新一个特定字段(“状态”),而不必先进入另一个“编辑”视图。
我如何 http-post 到相同的操作(详细信息)但只保存“状态”字段,而不保存作为视图模型一部分的所有其他属性(仅用于显示)?我是否需要一个单独的视图模型来显示状态?对 ASP.NET MVC 不熟悉并感到困惑。
查看模型
public string FirstName { get; set; }
public string LastName { get; set; }
public string Birthdate{ get; set; }
public string Status { get; set; }
//etc.
查看
<div>
@Html.DisplayFor(model => model.FirstName)
@Html.DisplayFor(model => model.LastName)
@Html.DisplayFor(model => model.Birthdate)
//etc.
</div>
<div>
@TextBoxFor(model => model.Status)
<button type="submit" value="Save Status" />
</div>
控制器
[HttpGet]
public ActionResult Details(int id)
{
var person = personRepo.GetById(id);
var vm = BuildPersonDetailsViewModel(person);
return View(vm);
}
[HttpPost]
public ActionResult Details(PersonDetailsViewModel vm)
{
var person = personRepo.GetById(vm.PersonID);
person.Status = vm.Status;
personRepo.Update(person);
}
【问题讨论】:
-
看起来不错。你有什么问题?
-
我只是在获取/发布、视图模型、控制器等之间迷路了。我想我现在想通了。一方面,我缺少一个存储人员 ID 的隐藏字段(只读“详细信息”视图并不真正需要它,但将任何内容发回数据库需要它。我将发布有关我的解决方案的更多详细信息下面。
标签: asp.net-mvc entity-framework-6 repository-pattern asp.net-mvc-viewmodel