在.NET MVC4中以正确的方式路由

时间:2013-05-09 13:36:06

标签: c# asp.net-mvc-4 asp.net-mvc-routing

我正在开发一个管理面板,我已经创建了一个名为“Admin”的新区域。现在在我的AdminAreaRegistration.cs文件中,路由就像这样

context.MapRoute(
    "Admin_default",
    "Admin/{controller}/{action}/{id}",
     new { controller = "Index", action = "Index", id = UrlParameter.Optional }
);

所以我可以通过http:// {mydomain} / Admin /

访问管理面板

我有2个控制器。 IndexController管理登录,登录等 UserController管理列表用户,添加新用户等

当我尝试访问用户列表时,网址将显示为http:// {mydomain} / Admin / User / List /这是非常好看的网址。但是当我尝试访问Signin以获得新的管理员时,网址将如下所示: http:// {mydomain} / Admin / Index / Signin /

但我不喜欢第二个网址。我可以像http:// {mydomain} / Admin / Signin /那样访问索引控制器,其他人就像第一个一样。

你会如何处理这种情况?我真的想以正确的方式做到这一点

1 个答案:

答案 0 :(得分:1)

对于您的Signin网址,如果您在Indexcontroller中设置了Signin操作设置,请在“Admin_default”路由之前设置路由,如下所示:

context.MapRoute(
    "Admin_Signin",
    "Admin/SignIn",
     new { controller = "Index", action = "Signin" }
);

然后,您可以使用ActionLinks链接到此操作,如下所示:

@Html.ActionLink("Sign-in here", "Signin", new { controller = "Index", action = "Signin" })