添加视图和编辑视图通常非常相似,因此写入2个视图是没有根据的.随着应用程序的发展,您将对两者进行相同的更改.
但是,通常存在细微差别.例如,一个字段在添加后可能是只读的,如果该字段是DropDownList,则不再需要ViewData中的List.
那么,我应该创建一个包含两个视图的所有信息的视图数据类,其中,根据您正在执行的操作,某些属性将为null?
我应该将视图数据中的操作作为枚举包含在内吗?
我应该用<%if(ViewData.Model.Op == Ops.Editing){%>包围所有微妙的差异吗?
或者,还有更好的方法?
真的很容易.我们假设您正在编辑博客文章.
这是您对新/编辑的2个操作:
public class BlogController : Controller { public ActionResult New() { var post = new Post(); return View("Edit", post); } public ActionResult Edit(int id) { var post = _repository.Get(id); return View(post); } .... }
以下是观点:
<% using(Html.Form("save")) { %> <%= Html.Hidden("Id") %> <%= Html.TextBox("Title") %> <%= Html.TextArea("Body") %> <%= Html.Submit("Submit") %> <% } %>
这是视图提交的保存操作:
public ActionResult Save(int id, string title, string body) { var post = id == 0 ? new Post() : _repository.Get(id); post.Title = title; post.Body = body; _repository.Save(post); return RedirectToAction("list"); }