2011-06-24 37 views
3

我已经创建了一个新的带有区域的ASP.NET MVC项目,并且我试图将控制器操作设置为默认控制器操作(如果用户访问该区域)。如何获得ASP.NET MVC为区域设置默认控制器和操作?

我添加了一个名为'登录'的区域,现在我有Areas/Login/,我添加了LoginController

我想设置这个控制器,当用户导航到网站时被调用。 我可以访问它,如果我输入浏览器www.test.com/Login/Login但我不知道如何在global.asax设置路由指向该控制器作为默认值。

如何在ASP.NET MVC中做到这一点?

+0

点击这里:http://stackoverflow.com/questions/2140208/how-to-set-a -default-route-to-an-area-in-mvc –

回答

5

当你创建你的区域时,MVC没有创建Area/[AreaName]文件夹下的[AreaName]AreaRegistration类吗?在那里您会发现与此类似的区域注册。修改默认参数控制器名(登录)的controller =部分要通过默认使用:

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Login_default", 
      "Login/{controller}/{action}/{id}", 
      new { controller = "Login", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
+0

该控制器是问题,谢谢。 – 1110

2

如果您使用[Authorize]属性修饰您的HomeController(或确实是需要某人登录的所有控制器),ASP.NET MVC将自动将用户重定向到登录屏幕(如果他们未登录)。

用法示例:

[Authorize] 
public ActionResult Home() 
{ 
} 

此外,您可能想在Open Redirect attack vulnerability (and fix)读了。

+0

我把这里的登录作为例子。我的主要问题是如何设置路由以启动某个控制器作为默认值,如果该控制器在区域内。 – 1110

相关问题