首页新闻找找看学习计划

asp.net mvc4 View多层目录和访问级别设置

0
悬赏园豆:20 [已解决问题] 解决于 2015-06-13 15:25

1、我的网站的后台目录为:admin,后台默认页为/home/index/

访问后台的默认地址为:/admin/,完整路径为:localhost:/admin/home/index

2、网站的默认地址为:localhost:/home/index

 

我修改了Controllers和Routing的命名空间如下:

 

routes.MapRoute(
    "admin", // 路由名称,这个只要保证在路由集合中唯一即可
    "admin/{controller}/{action}/{id}", //路由规则,匹配以Admin开头的url
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, //
    namespaces: new string[] { "admin" }
);


routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    namespaces: new string[] { "demo" }
);

 

Controllers:

文件夹: admin,内容:HomeController.cs  命名空间:admin

文件夹:Home,内容: HomeController.cs   命名空间:demo

 

Views:

文件夹:Home,内容:index.cshtml

文件夹:admin,内容index.cshtml

 

问题:当我访问localhost:/admin/的时候,应该为:localhost:/admin/Home/index

但是现在显示的页面为localhost:/home/index

 

 

 

请问这种多层级文件夹路径应该如设置,才能正常把views呈现出来?

imluzhi的主页 imluzhi | 初学一级 | 园豆:37
提问于:2015-06-09 23:49
< >
分享
最佳答案
1

这个问题我还是自己找到了解决方案,我是新手,所以做成了ASP.NET WEB的运行机制,正确的运行机制如下:

利用Area区域把admin做成一个子系统的模版。

 

然后在生成的区域中会存在一个路由文件:AdminAreaRegistration

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional },
        namespaces: new string[] { "Demo.Controllers" }
        //就算添加了区域,如果不修改命名控件,控制器的名称仍然会冲突
    );
}

 

那么Admin模版中的所有Controllers的命名控件都要修改为:Demo.Controllers

 

这种机制后,才能有效解决我上边的问题!

 

如何指定默认网站与区域网站的链接?

在ASP.NET MVC中有三个默认的RouteValue名称,分别是controller、action与area,其中controller与Action参数是必要的,剩余的area这个AouteValue就是当需要置顶Area的时候才必须要添加的。

如果要生成生成Admin区域下的Home控制器的Index动作,可以使用下边这种语法:

@Html.ActionLink("Admin的控制器", "Index", new { Controller = "Home", area = "Admin" })

如果要用Hml.RenderAction赋值方法来装入部分视图属性,运行相同的技巧即可:

@Html.Action("Index","Home",new {area="Admin"})

 

area路由值是在AdminAreaRegistration类别中的AreaName属性中所设置的值

imluzhi | 初学一级 |园豆:37 | 2015-06-13 15:24
其他回答(1)
0

注意路由注册的顺序,会优先匹配先注册的。

收获园豆:20
幻天芒 | 园豆:36522 (高人七级) | 2015-06-10 09:28

按照我上边的路由的话,如果是/home/index  应该默认为admin文件夹下的,但是现在默认的是第二个选项

支持(0) 反对(0) imluzhi | 园豆:37 (初学一级) | 2015-06-10 19:56

@imluzhi: 只有localhost://admin/才会默认是admin文件夹下的。否则是走第二个路由的。

支持(0) 反对(0) 幻天芒 | 园豆:36522 (高人七级) | 2015-06-10 23:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册