码迷,mamicode.com
首页 > 其他好文 > 详细

使用区域

时间:2014-06-02 11:34:28      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

新建一个MVC项目,取名叫11-4WorkingWithAreas,项目模板选择Internet Application。

1、创建区域

在解决方案管理器中鼠标右击该项目->add->area。

出现对话框,输入要新加的区域名字,这里取名为Admin。

添加后,项目中会新增一个Areas顶级文件夹,其中包含了一个名为Admin的文件夹。

每个象Admin这样的文件夹就是一个区域,里面包含了Controllers、Models、Views文件夹,还包含了一个以该区域名Admin打头的AdminAreaRegistration.cs的文件,这个文件中定义了在本区域内的路由匹配模式。

 

2、区域内实例

在Admin区域内,添加控制器HomeController:

bubuko.com,布布扣
namespace _11_4WorkingWithAreas.Areas.Admin.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Admin/Home/

        public ActionResult Index()
        {
            return View();
        }

    }
}
bubuko.com,布布扣

在Index动作方法上鼠标右击,添加默认视图Index.cshtml。路径为/Areas/Admin/Views/Home/Index.cshtml.

这样,客户端可以通过"~/Admin/Home/Index"访问到这个页面。

 

需要注意的是,如果这个时候直接访问"~/",也就是"~/Home/Index"会出现错误。

有两个HomeController会发生名字冲突。

bubuko.com,布布扣

所以,对于区域来说,并不会隔绝路由名字或者控制器名字,都是在整个解决方案中有效的。

解决这个冲突的方法跟前面一样,在主项目的Global.asax中路由定义里面,添加一个匿名类型new[] { "_11_4WorkingWithAreas.Controllers" }如下:

bubuko.com,布布扣
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
                new[] { "_11_4WorkingWithAreas.Controllers" }
            );

        }
bubuko.com,布布扣

这样保证主项目中的控制器优先,避免冲突。

使用区域,布布扣,bubuko.com

使用区域

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/brown-birds/p/3764028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!