ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块

  之前的My Blog提供了列表的展示和文章显示功能,但是所有数据仍然只能通过数据库录入,为了完成最初的角色“作者”的用例,本章将介绍如何使用“Area”实现My Blog的管理功能。

根据功能分离代码

  根据功能分离代码即所谓的模块,由于在My Blog中已经存在博客查看功能,而管理功能与查看功能是有区别的,所以在开发时也应考虑将它们的代码进行区分,以便于阅读和管理。而区分代码最常用的就是通过子目录将它们区分,如下:

  

  在Controllers、Models和Views目录下创建Admin子目录,但在ASP.NET MVC中提供了一个更容易切分功能的方法“Area”。

使用Area分离功能

  1. 添加一个Admin Area:

  在My Blog项目的右键菜单中找到Add--->Area:

  

  Area名称设置为Admin:

  

  完成后将生成一下目录和文件:

  

  比较特殊的文件是AdminAreaRegistration.cs文件,该文件包含了该Area的路由信息,关于路由后续介绍:

  

创建管理模块主页

  1. 仓储中添加增、删、改功能:

  

  2. 业务逻辑添加增、删、改功能:

  

  3. 添加页面布局文件(为了快速开发复制一份原有布局文件进行修改):

   

  4. 添加管理主页相关的HomeController、View:

  

  Index.cshtml内容:

  

  _Layout.cshtml:

  

  _ViewStart.cshtml:

  

  5. 为Admin Area路由添加命名空间(因为原来就有一个名为HomeController的控制器,用于显示主页)

  对App_Start的RoutConfig.cs和Areas下面的AdminAreaRegistration.cs进行修改,注册路由的时候加入命名空间:

  

  

添加文章管理功能

  1. 添加PostManagement的Controller、View、Model

  

  管理文章列表代码:

  

  更新文章代码:

  

  列表页面:

  

  更新文章页面:

  

  视图模型:

  

    

  代码说明:
  1. 为什么Controller中有两个Update方法?
  因为完成文章更新有两个步骤,第一个步骤是根据ID向服务器请求文章数据,所以参数为id的update方法用于请求数据;第二个步骤是将修改后的数据提交到服务器,所以参数为PostMaintainViewModel类型的方法用于处理由浏览器提交的文章数据并保存。
  一般来说获取数据有HTTP的Get方法,提交数据使用Post方法,在ASP.NET MVC中的action默认使用Get,如果需要使用其它方法可以用特性来标记,如代码中的[HttpPost]。
而两个方法同名是为了表现出更新方法两个
  2. 页面代码中使用Html.BeginForm方法来生成一个form,HTML中的form用于向服务器提交form内的数据,ASP.NET MVC中可以使用这个方法来生成一个form。
  3. 已经有PostViewModel问什么还要创建类似的PostMaintainViewModel?因为虽然内容相似甚至相同,但是毕竟功能不一样,如果使用同一个ViewModel,那么当需要对其中一个功能进行拓展时会影响另一个功能。
  运行效果:

  

  

  

  

小结

  本章通过创建area的方法为My Blog提供了文章维护的功能,并介绍了主要代码,现在My Blog已经具备内容展示和维护的功能,但是所有功能都是不完善的,比如界面、文章更新时候的排版还有访问限制等,这些功能也将在后续慢慢完善。在使用Area开发新的功能模块时需要注意的就是Controller的重名问题,如果存在重名需要在路由信息中加入命名空间的限制。

 本文连接:http://www.cnblogs.com/selimsong/p/7659997.html

ASP.NET没有魔法——目录

posted @ 2017-10-13 10:52  7m鱼  阅读(1457)  评论(5编辑  收藏