ASP.NET MVC中Area分层模块处理大解密 下
来源:互联网 发布:linux grub启动命令 编辑:程序博客网 时间:2024/06/05 14:45
在MVC框架中注册Area
除了建立好目录结构外,还需要告诉ASP.NET MVC框架area已经建立好了,这个属于注册的步骤,幸运地在建立一个新的area时已经自动建立起来了。请注意在每一个area的目录下,都会自动产生一个注册的类文件(比如BlogAreaRegistration.cs, HelpDeskAreaRegistration.cs,)。每一个area的注册类文件都是继承自AreaRegistration这个基类,比如HelpDeskAreaRegistration的类文件代码如下:
public class HelpDeskAreaRegistration : AreaRegistration
{
public overridestring AreaName
{
get
{
return "HelpDesk";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"HelpDesk_default",
"HelpDesk/{controller}/{action}/{id}",
new { action= "Index", id= UrlParameter.Optional }
);
}
}
可以看到,HelpDeskAreaRegistration类覆写了AreaName属性和RegisterArea方法。RegisterArea方法则在MVC中注册了新的路由信息。
在每一个area中都必须有一个象这样的注册类。但什么时候去使用这些注册的类呢?如果打开Global.asx这个文件,会发现在Application_Start事件中会发现如下代码:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
这里读者可以看到,调用了AreaRegistration类的静态方法RegisterAllAreas()去注册所有的are注册文件,而RegisterAllAreas()方法会去逐一调用应用中所有area的RegisterArea()方法。
接下来,在主程序及每个area中都增加HomeController,这样,就会有四个以HomeController命名的控制类,如下所示:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
同样,鼠标右击每个Index()方法,在弹出的菜单中新增加一个Index视图,这样总共有4个index视图页面。运行应用,可以看到如下图的效果,下图是其中运行HelpDesk Area时的效果,请留意其中的URL
Areas之间的调用
ASP.NET MVC中,经常需要在控制层的不同方法之间进行互相调用。如果没特别指定,则默认为同一个area中的action方法和控制器之间的调用。如果需要在不同的area之间进行互相调用,可以使用如下方法:
<%= Html.ActionLink("Main Area","Index","Home",new { area = "" },null)%>
<br /><br />
<%= Html.ActionLink("Blog Area","Index","Home",new { area = "Blog" },null)%>
<br /><br />
<%= Html.ActionLink("Help Desk Area","Index","Home",new { area = "HelpDesk" },null)%>
<br /><br />
<%= Html.ActionLink("Shopping Area","Index","Home",new { area = "Shopping" },null)%
可以看到,上面使用了ActionLink()方法产生链接,注意其中的第4个参数,使用new {area=“Blog”}这样形式的参数,指出调用的是哪一个area中action方法。
使用RedirectToAction
同样,我们经常要在某个area中的action方法去调用另外一个area方法中的action,这个时候要如何做呢?代码如下:
public ActionResult Index()
{
return RedirectToAction("Index","Home",new { Area = "HelpDesk" });
}
这里,使用了RedirectToAction方法去调用另外一个area中的action方法,同样是使用了new {Area=“HelpDesk”}的方式,指定area的名称即可,所以这里调用了HelpDesk Area中的index()方法。
小结
在本文中,介绍了ASP.NET MVC中的Area的概念,Area模块化的方式,能将复杂的应用划分为各个模块,并在每个模块中都能按照MVC的架构划分视图,实体和控制层的目录架构,这样更有利于项目的架构组织,更清晰容易在各模块之间进行对应的调用。
- ASP.NET MVC中Area分层模块处理大解密
- ASP.NET MVC中Area分层模块处理大解密
- ASP.NET MVC中Area分层模块处理大解密
- ASP.NET MVC中Area分层模块处理大解密
- ASP.NET MVC中Area分层模块处理大解密 下
- ASP.NET MVC Area操作
- asp.net mvc Area使用
- ASP.NET MVC系列:Area
- Asp.net MVC area文件夹下设置默认显示页面
- ASP.NET MVC中Area的另一种用法
- ASP.NET MVC中的Area区域简介
- 在ASP.NET MVC环境中使用加密与解密
- ASP.NET MVC中错误处理方式
- ASP.NET MVC中错误处理方式
- ASP.NET MVC中错误处理方式
- ASP.NET MVC中错误处理方式
- ASP.NET MVC中全局异常处理
- asp.net mvc 远程校验Remote属性在Area下验证路径不正确的解决
- C# 文件下载四方法
- ASP.NET MVC中Area分层模块处理大解密
- HDU 1085 Holding Bin-Laden Captive!
- 奇偶行table颜色不同
- Android Power Management
- ASP.NET MVC中Area分层模块处理大解密 下
- 【Java基础 009】 正则表达式
- android下res目录 资源定义及使用
- MySql常用命令总结(转)
- eclipse 添加 外部 jar包 方法
- cocos2d里面的文理图片和UIImage之间的转化
- ZOJ 1073 Round and Round We Go
- 中国Android手机top5排名 三星仍居第一
- 千淘万漉虽辛苦,吹尽狂沙始见金