之前的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没有魔法——目录

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

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

  1. ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQLEF

    之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方仅仅是更换了MySQL的数据提供器,那么在EF中是否也只需更换&quo ...

  2. php开发mvc教程,php开发一个简单的MVC

    本文通过实例为大家介绍用php开发一个简单mvc的方法,起到势砖引玉的作用,本文比较适合刚接触mvc的朋友. MVC其实就是三个Model,Contraller,View单词的简称. Model,主要 ...

  3. 以ssm+mvc框架来开发一个系统的基本流程

    还有几个月就要准备考研了,写这篇文章的目的主要是,接下来的一年时间要准备考验,不想把积累两年的经验都忘了,在这里先留下珍贵的笔记. 在这之前,首先建立一个maven项目,把相应的需要的jar包都从仓库 ...

  4. 在ASP.NET MVC应用中开发插件框架(中英对照)

    [原文] Developing a plugin framework in ASP.NET MVC with medium trust [译文] 在ASP.NET MVC应用中开发一个插件框架 I'v ...

  5. ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(1)读者序】★★★...

    本书主要内容 大部分开发人员在学习Asp.net的过程中都有这样的体会,使用Asp.net开发很多年,但仍然感觉对Asp.net技术的了解比较少,对知识点的了解比较模糊:以及,在工作过程中经常接到克刻 ...

  6. asp毕业设计—— 基于asp+access的企业人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统

    基于asp+access的企业人力资源管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的企业人力资源管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  7. asp毕业设计—— 基于asp+access的网上考试系统设计与实现(毕业论文+程序源码)——网上考试系统

    基于asp+access的网上考试系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的网上考试系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开 ...

  8. 一起谈.NET技术,专访微软MVP衣明志:走进ASP.NET MVC 2框架开发

    日前微软已经发布ASP.NET MVC 2框架RC版,究竟这次RC版本的发布对于WEB开发者带来怎样的改变?以及未来ASP.NET MVC 2正式版还会有哪些改进?带着这样的问题,我们51CTO记者彭 ...

  9. ASP.NET Core 2.0 MVC项目实战

     一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还 ...

  10. ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序

    本文是本系列文章第一篇,主要通过建立一个默认ASP.NET MVC项目来引出与ASP.NET MVC相关的功能,由于ASP.NET MVC一个简单的模板就具备了数据库操作.身份验证.输入数据校验等功能 ...

最新文章

  1. Flutter开发之WebView加载网页(24)
  2. python3 命令行参数处理库 argparse、docopt、click、fire 简介
  3. eai app_EAI的Spring集成教程
  4. php 返回页面重复提交,php防止表单重复提交
  5. C#中的修饰符及其说明
  6. mysql安装及一些注意点
  7. 扎克伯格被美国一刊物评为“年度恶人” Facebook为世界最差网站
  8. 牛津教授吐槽DeepMind心智神经网络,还推荐了这些多智能体学习论文
  9. java经典源码 阅读_公开!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例...
  10. Growth—电子书预览版
  11. 微信小程序图片宽高自适应
  12. 高级电工技术实训考核装置
  13. 离散数学及其应用 算法
  14. 家用文件服务器raid,家用NAS搭建RAID指南 总有一款适合你
  15. 校OJ P1219 -- zyf的童年
  16. java if 终止_java中跳出或终止if语句的方法
  17. 部分女生爱搭配蕾丝的服饰
  18. angular 架构
  19. do vis是什么意思_餐前酒和餐后酒有什么区别
  20. 11.8版本更新公告:灵罗娃娃 格温登场

热门文章

  1. 在设计DJANGO用户更改密码时,出现NoReverseMatch at /account/password-change/这种妖精如何办?...
  2. 解决SecureCRT连接linux超时后断开
  3. 彻底了解HASH算法及应用(一)
  4. CSS3 Gradient渐变
  5. select框多级联动
  6. OSI参考模型及其数据封装和解封装介绍
  7. python 并发编程 多线程 守护线程
  8. linux - 查看是否安装 apache 以及 apache 版本
  9. 为archlinux选择国内镜像
  10. C++ Primer 第八章 标准IO库(转载)