我创建了一个带有区域的新ASP.NET MVC项目,我试图将控制器操作设置为默认控制器操作(如果用户访问该区域)。
我添加了一个名为“登录”的区域,现在我已Areas/Login/
,我添加了LoginController
。
我正在尝试将此控制器设置为在用户导航到网站时调用。
如果我输入浏览器www.test.com/Login/Login
,我可以访问它,但我不知道如何在global.asax
中设置路由以指向此控制器作为默认值。
我如何在ASP.NET MVC中执行此操作?
答案 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)。