.net中的域Area

来源:互联网 发布:域名快速备案 编辑:程序博客网 时间:2024/05/29 04:28

ASP.NET MVC允许使用Area(区域)来组织web应用程序,每个Area代表应用程序的不同功能模块。这对于大工程非常有用,Area使每个功能模块都有各自的文件夹,文件夹中有自己的Controller、View和Model。比如说,一个项目分为三个模块,分别是(Customer、Order、User),那么用mvc 的area是这样建立的。


添加一个Area

首先用VS新建一个MVC的解决方案。在解决方案中,鼠标右键点击添加区域。



在弹出的对话框中输入区域的名字




对于其他模块重复以上动作就可以了,最后我们得到的结构是这样的:



注册Area

每一个area的注册文件都是继承自AreaRegistration类的,比如UserAreaRegistration的类的代码是这样的:

<span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;">using System.Web.Mvc;namespace mvcdemo.Areas.User{    public class UserAreaRegistration : AreaRegistration    {        public override string AreaName        {            get            {                return "User";            }        }        public override void RegisterArea(AreaRegistrationContext context)        {            context.MapRoute(                "User_default",                "User/{controller}/{action}/{id}",                new { action = "Index", id = UrlParameter.Optional }            );        }    }}</span>

并且在Global.asx文件中会发现Application_Start事件中有以下方法:

<span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;">protected void Application_Start()        {            AreaRegistration.RegisterAllAreas();            RegisterGlobalFilters(GlobalFilters.Filters);            RegisterRoutes(RouteTable.Routes);        }</span>


Areas之间的调用


关于Area之间的调用,可以分为三种情况:第一种是在当前Area生成指向当前Area的链接;第二种是生成指向其他Area的链接;第三种是在某个Area中生成指向根目录的链接。下面是这三种情况生成链接的方法:

(1)如果要在Area中生成当前Area的URL链接,可以这样写:

<span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;">@Html.ActionLink("Add", "BasicInfo")</span>

(2)如果要生成其他Area的URL链接,则需要在Html.ActionLink方法的匿名参数中使用一个名为area的变量来指定要生成链接的Area名称,可以这样写:

<span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;">@Html.ActionLink("Click me to go to another area", "Index", new { area = "Customer" })</span>

(3)如果要在当前Area生成指向根目录某个Controller的链接,那么只要把area变量变为空字符串就行,可以这样写:

<span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;">@Html.ActionLink("Click me to go to top-level part", "Index", new { area = "" })</span>



0 0
原创粉丝点击