如何让ASP.NET MVC为区域设置默认的Controller和Action?

时间:2011-06-24 19:21:07

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

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

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

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

我如何在ASP.NET MVC中执行此操作?

2 个答案:

答案 0 :(得分:5)

当您创建区域时,MVC是否在区域/ [AreaName]文件夹下创建了[AreaName]AreaRegistration类?在那里你会发现看起来与此类似的区域注册。将defaults参数的controller =部分修改为默认情况下要使用的控制器名称(Login):

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

答案 1 :(得分:2)

如果您使用[Authorize]属性装饰HomeController(或者实际上,所有需要某人登录的控制器),如果没有记录,ASP.NET MVC会自动将人们重定向到登录屏幕英寸

使用示例:

[Authorize]
public ActionResult Home()
{
}

另外,您可能需要阅读Open Redirect attack vulnerability (and fix)