zoukankan      html  css  js  c++  java
  • MVC4笔记 Area区域

    mvc4.0新增的area区域机制,可以协助你在架构较为大型的项目,让独立性较高的部分功能独立成一个MVC子网站,以降低网站与网站之间的耦合性,也可以通过area的切割,让多人同时开发同一个项目时候,能够减少互相冲突的机会。

     
    在mvc专案中不能有两个同名的控制器,即使你有区分不同的命名空间可以正常编译,但实际上在运行时仍然出错,除非在app_start/RouteConfig文件中通过mapRoute方法新增网址路由的设置,并明确指定命名空间,才能让此功能正常运行。
    eg
    routes.MapRoute(
    name:"订单系统",
    url:"Orders/{controller}/{action}/{id}",
    defaults:new { controller = "member" action="index" ,id=UrlParameter.Optional},
    namespaces:new string[]{"MvcApplication1.Controllers.订单系统"}
    );
    routes.MapRoute(
    name:"会员系统",
    url:"Members/{controller}/{action}/{id}",
    defaults:new { controller = "member" action="index" ,id=UrlParameter.Optional},
    namespaces:new string[]{"MvcApplication1.Controllers.会员系统"}
    );
     
    但是如果网站真的很大,也许控制器都好几十个文件,这样不断维护下去,网站就会越来越复杂,失去了关注点分离的好处,mvc项目如果在网站独立性很高的情况下,通常会拆分为不同的项目来开发,但在管理上会变得比较麻烦,例如在不同的项目中会有重复定义的web.config属性,部署的复杂度增加。
     
    也因为有这样的需求,在2.0中mvc就提供了area机制,可以在同一个项目内就能够切分不同的mvc网站,且每一个子网站都会有完整的mvc目录结构在开发商就像是区分成不同的mvc网站一样
     
    如何在现有项目中新增区域
    项目上单击右键 添加 --》区域
     
     
    如何设置区域的网址路由
    在每一个区域目录下都会有一个[AreaName]AreaRegistration.cs文档
    例如刚新增一个a区域,那么就会有一个aAreaRegistration.cs,此文档就如同在app_start/routeConfig.cs一样
    来定义网址路由。
    aAreaRegistration.cs里面这个类集成了AreaRegistration抽象类,并替换一个AreaName属性用来指定这个区域的名称,另外替换一个方法名为RegisterArea,这个的属性与app_start/routeConfig.cs中的RegisterRoutes方法如出一辙。
     http://blog.sina.com.cn/s/blog_95fa28e60102vdn7.html
    默认路由与区域路由的优先级
    在网站根目录下的Global.asax中的Application_Start()方法中会看到的AreaRegistration.RegisterAllArea();这行默认的程序代码
     
    其中第一行 AreaRegistration.RegisterAllAreas()就是讲区域的路由注册金RouteTable.Routes,"先注册先赢"
    如果在a区域的aAreaRegistration.cs定义了某个网站路由,而在网站根目录下的Global.asax也注册了相同规则的话,最后比对成功的规则将会是区域的路由。
     
     
    如何制定默认网站与区域网站的链接
    在mvc中有三个默认的RouteValue名称,分别是控制器,action,area,其中控制器和action参数是必要参数,缺一不可, 剩下的区域这个RouteValue就是当需要特别制定到区域的时候才必须加上的。
    以Html.ActionLink()为例,(Url.Action的用法一样)
     
    若要生成指定的a区域下Member控制器的Index动作,可使用以下语法,只要额外加一个区域路由值就可以
    @Html.ActionLink("会员订单",“Index”,new { controller="Member",area="a"})
     
    如果要用Html.Action辅助方法来装入部分监视属性,
    @Html.Action("aDetail","Member",new {area="a"})
  • 相关阅读:
    第一节:SpringMVC概述
    SpringMVC【目录】
    Windows 系统快速查看文件MD5
    (error) ERR wrong number of arguments for 'hmset' command
    hive使用遇到的问题 cannot recognize input
    Overleaf支持的部分中文字体预览
    Understanding and Improving Fast Adversarial Training
    Django2实战示例 第十三章 上线
    Django2实战示例 第十二章 创建API
    Django2实战示例 第十一章 渲染和缓存课程内容
  • 原文地址:https://www.cnblogs.com/zkwarrior/p/4796785.html
Copyright © 2011-2022 走看看