博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块
阅读量:5096 次
发布时间:2019-06-13

本文共 1707 字,大约阅读时间需要 5 分钟。

  之前的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的重名问题,如果存在重名需要在路由信息中加入命名空间的限制。

 本文连接:

转载于:https://www.cnblogs.com/selimsong/p/7659997.html

你可能感兴趣的文章
误用的volatile
查看>>
CI框架程序--本地调试之后部署新浪SAE
查看>>
Oracle 从缓存里面查找真实的执行计划
查看>>
函数参数详解
查看>>
01: docker 基本使用
查看>>
Django--自定义 Command 命令
查看>>
Windows 10 SDK 10.0.10158
查看>>
Delphi 调用C#编写的WebService 参数为Null解决方法
查看>>
手动完美去除Windows 7 快捷方式小箭头
查看>>
The last packet successfully received from the server was 39,900 milliseconds ago问题解决
查看>>
编译前端工具
查看>>
xming2
查看>>
特征工程入门
查看>>
『嗨威说』数据结构 - 第三章学习内容小结
查看>>
Mac复制粘贴文本时默认使用无格式模式
查看>>
[使用经验]cocostudio UI编辑器的裁剪
查看>>
selenium,控制滚动条
查看>>
【HMM】隐马尔科夫模型
查看>>
Flutter实战视频-移动电商-44.详细页_首屏自定义Widget编写
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第2节 Date类_1_毫秒值的概念和作用...
查看>>