.net中的域Area

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值