C# 如何重定向到MVC3中的其他区域?
目前我有3个方面(当我开始工作时,还会有更多方面):C# 如何重定向到MVC3中的其他区域?,c#,asp.net-mvc-3,routing,asp.net-mvc-areas,asp.net-mvc-3-areas,C#,Asp.net Mvc 3,Routing,Asp.net Mvc Areas,Asp.net Mvc 3 Areas,目前我有3个方面(当我开始工作时,还会有更多方面):登录、用户和管理。Global.asax中的默认路径转到登录区域(login\index\index)中的索引控制器的索引操作,该操作正常,我就是这样映射的: routes.MapRoute( "Default", // Route name "{area}/{controller}/{action}/{id}", // URL with parameters new { area = "Login", controll
登录
、用户
和管理
。Global.asax
中的默认路径转到登录区域(login\index\index
)中的索引控制器的索引操作,该操作正常,我就是这样映射的:
routes.MapRoute(
"Default", // Route name
"{area}/{controller}/{action}/{id}", // URL with parameters
new { area = "Login", controller = "Index", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new[] { typeof(AppName.Areas.Login.Controllers.IndexController).Namespace }
);
3个区域中的每一个都在区域注册文件中按如下方式注册:
context.MapRoute(
"Admin_default",
"{area}/{controller}/{action}/{id}",
new { area = "Admin", controller = "Index", action = "Index", id = UrlParameter.Optional },
new[] { typeof(AppName.Areas.Admin.Controllers.IndexController).Namespace }
);
登录控制器索引操作获取用户登录详细信息,查找用户类型并将其重定向到相应区域。。。。。。至少应该这样。通过搜索google,我发现重定向到特定区域的正确方法如下:
return RedirectToAction("Action", "Controller", new { area = UserType });
这似乎不起作用,它只是重定向到Login\Controller\Action
,我不知道为什么
在我试图找出发生了什么的过程中,我使用了以下方法:
var url = Url.Action("Action", "Controller", new { area = "Admin" });
它产生了相同的Login\Controller\Action
url
如果您能帮助解决此问题,我们将不胜感激。在routes参数中,您只需设置新的{area=“OtherAreaName”} 编辑 哦,我看你已经试过了。我假设该区域的名称在类AreaRegistration类中被正确引用和命名,如下所示
public class AuthorAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Author";
}
}
// ...
}
也可能是您需要身份验证,并且您被重定向到登录页面?哦,需要身份验证,但是如果验证失败,它会在查询字符串中使用请求的url重定向到登录,以便在他们重新登录后知道去哪里,这并没有发生,所以我知道这不是一个身份验证问题。如果查询字符串中有returnUrl,为什么不检查登录操作呢。成功登录后,它需要使用returnUrl参数。如果不使用,将其更改为开始使用我的观点是,当身份验证失败时,查询字符串中会出现一个url,但当我重定向到另一个区域并在登录屏幕上结束时,查询字符串中没有参数,这表明将我发送回登录屏幕不是身份验证失败