首页 新闻 赞助 找找看

asp.net mvc3 中建立Areas,如何自定义访问路径名称?

1
悬赏园豆:10 [已解决问题] 解决于 2012-06-18 11:26

举例,我打算为设定一个管理后台,建立Areas/Admin;

这样访问就是www.xxx.com/Admin/xx,如何自定义这个Admin呢?这样的方法安全性能很差,在不改变文件夹命名的情形下,如何自定义这个路径?

红尘中迷茫的主页 红尘中迷茫 | 初学一级 | 园豆:60
提问于:2012-06-14 13:57
< >
分享
最佳答案
0

提供一种方案你看是否可行,AdminAreaRegistration.cs中代码如下:

public static readonly string customAreaName = "Admin_23ser3g1";

public override string AreaName
{
    get
    {
        return "Admin";
    }
}

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_default",
        customAreaName + "/{controller}/{action}/{id}",
        new { controller = "index", action = "Index", id = UrlParameter.Optional },
        new[] { "MvcApplicationQuestionTest.Areas.Admin.Controllers" }
    );
}

然后在链接的地方这样写:

@using MvcApplicationQuestionTest.Areas.Admin;

<a href="/@(AdminAreaRegistration.customAreaName)/index/home">Test</a>
收获园豆:6
artwl | 专家六级 |园豆:16736 | 2012-06-14 17:24
其他回答(2)
0

对于URL路由:/{controller}/{action}

你可以修改为:/Abc/{action},然后设置controller指向Admin

收获园豆:2
无之无 | 园豆:5095 (大侠五级) | 2012-06-14 14:02
0

在你的AdminAreaRegistration.cs中方法public override void RegisterArea(AreaRegistrationContext context)内注册你的area即可。

context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}",
                new { controller = "Default" ,action="Home"}
            );
收获园豆:2
today4king | 园豆:3499 (老鸟四级) | 2012-06-14 14:43

我是说,名字是Admin很容易被外界攻击,怎么变成我自己定义的名字,

context.MapRoute(
               
"Admin_default",
               
"Admin_23ser3g1/{controller}/{action}",
               
new { controller = "Default" ,action="Home"}
            );

这样定义是可以,可以www.xxx.com/Admin_23ser3g1这样来访问管理后台,但是登录认证还是定向到/Admin/Account/LogOn了,而不是/Admin_23ser3g1/Account/LogOn

支持(1) 反对(0) 红尘中迷茫 | 园豆:60 (初学一级) | 2012-06-14 15:31

@红尘中迷茫: 从你的描述看来,应该是登录认证的跳转没有调整到你新修改的URL上。按照你回复的那个MapRoute已经可以实现修改路径了。

支持(0) 反对(0) kidlg | 园豆:200 (初学一级) | 2012-06-14 16:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册