当前位置:  开发笔记 > 编程语言 > 正文

使用ASP.NET MVC,如何最好地避免编写"添加视图"和"编辑视图"?

如何解决《使用ASP.NETMVC,如何最好地避免编写"添加视图"和"编辑视图"?》经验,为你挑选了1个好方法。

添加视图和编辑视图通常非常相似,因此写入2个视图是没有根据的.随着应用程序的发展,您将对两者进行相同的更改.

但是,通常存在细微差别.例如,一个字段在添加后可能是只读的,如果该字段是DropDownList,则不再需要ViewData中的List.

那么,我应该创建一个包含两个视图的所有信息的视图数据类,其中,根据您正在执行的操作,某些属性将为null?
我应该将视图数据中的操作作为枚举包含在内吗?
我应该用<%if(ViewData.Model.Op == Ops.Editing){%>包围所有微妙的差异吗?

或者,还有更好的方法?



1> Ben Scheirma..:

真的很容易.我们假设您正在编辑博客文章.

这是您对新/编辑的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");
}

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有