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没有魔法——目录
转载于:https://www.cnblogs.com/selimsong/p/7659997.html
ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块相关推荐
- ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQLEF
之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方仅仅是更换了MySQL的数据提供器,那么在EF中是否也只需更换&quo ...
- php开发mvc教程,php开发一个简单的MVC
本文通过实例为大家介绍用php开发一个简单mvc的方法,起到势砖引玉的作用,本文比较适合刚接触mvc的朋友. MVC其实就是三个Model,Contraller,View单词的简称. Model,主要 ...
- 以ssm+mvc框架来开发一个系统的基本流程
还有几个月就要准备考研了,写这篇文章的目的主要是,接下来的一年时间要准备考验,不想把积累两年的经验都忘了,在这里先留下珍贵的笔记. 在这之前,首先建立一个maven项目,把相应的需要的jar包都从仓库 ...
- 在ASP.NET MVC应用中开发插件框架(中英对照)
[原文] Developing a plugin framework in ASP.NET MVC with medium trust [译文] 在ASP.NET MVC应用中开发一个插件框架 I'v ...
- ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(1)读者序】★★★...
本书主要内容 大部分开发人员在学习Asp.net的过程中都有这样的体会,使用Asp.net开发很多年,但仍然感觉对Asp.net技术的了解比较少,对知识点的了解比较模糊:以及,在工作过程中经常接到克刻 ...
- asp毕业设计—— 基于asp+access的企业人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统
基于asp+access的企业人力资源管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的企业人力资源管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...
- asp毕业设计—— 基于asp+access的网上考试系统设计与实现(毕业论文+程序源码)——网上考试系统
基于asp+access的网上考试系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的网上考试系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开 ...
- 一起谈.NET技术,专访微软MVP衣明志:走进ASP.NET MVC 2框架开发
日前微软已经发布ASP.NET MVC 2框架RC版,究竟这次RC版本的发布对于WEB开发者带来怎样的改变?以及未来ASP.NET MVC 2正式版还会有哪些改进?带着这样的问题,我们51CTO记者彭 ...
- ASP.NET Core 2.0 MVC项目实战
一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还 ...
- ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序
本文是本系列文章第一篇,主要通过建立一个默认ASP.NET MVC项目来引出与ASP.NET MVC相关的功能,由于ASP.NET MVC一个简单的模板就具备了数据库操作.身份验证.输入数据校验等功能 ...
最新文章
- Flutter开发之WebView加载网页(24)
- python3 命令行参数处理库 argparse、docopt、click、fire 简介
- eai app_EAI的Spring集成教程
- php 返回页面重复提交,php防止表单重复提交
- C#中的修饰符及其说明
- mysql安装及一些注意点
- 扎克伯格被美国一刊物评为“年度恶人” Facebook为世界最差网站
- 牛津教授吐槽DeepMind心智神经网络,还推荐了这些多智能体学习论文
- java经典源码 阅读_公开!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例...
- Growth—电子书预览版
- 微信小程序图片宽高自适应
- 高级电工技术实训考核装置
- 离散数学及其应用 算法
- 家用文件服务器raid,家用NAS搭建RAID指南 总有一款适合你
- 校OJ P1219 -- zyf的童年
- java if 终止_java中跳出或终止if语句的方法
- 部分女生爱搭配蕾丝的服饰
- angular 架构
- do vis是什么意思_餐前酒和餐后酒有什么区别
- 11.8版本更新公告:灵罗娃娃 格温登场
热门文章
- 在设计DJANGO用户更改密码时,出现NoReverseMatch at /account/password-change/这种妖精如何办?...
- 解决SecureCRT连接linux超时后断开
- 彻底了解HASH算法及应用(一)
- CSS3 Gradient渐变
- select框多级联动
- OSI参考模型及其数据封装和解封装介绍
- python 并发编程 多线程 守护线程
- linux - 查看是否安装 apache 以及 apache 版本
- 为archlinux选择国内镜像
- C++ Primer 第八章 标准IO库(转载)