【问题标题】:How do I redirect to an other area in MVC3?如何重定向到 MVC3 中的其他区域?
【发布时间】:2012-11-16 09:45:31
【问题描述】:

目前我有 3 个区域(当我完成这项工作时会出现更多区域):LoginUserAdminGlobal.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 个区域中的每一个在 AreaRegistration 文件中都是这样注册的:

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 }
);

登录控制器索引操作获取用户登录详细信息,查找用户类型并将它们重定向到适当的区域......至少它应该这样做。从我可以收集到的搜索谷歌,重定向到特定区域的正确方法是:

return RedirectToAction("Action", "Controller", new { area = UserType });

这似乎不起作用,它只是重定向到Login\Controller\Action,我不知道为什么。

在我试图弄清楚发生了什么时,我使用了这个:

var url = Url.Action("Action", "Controller", new { area = "Admin" });

产生了相同的Login\Controller\Action url。

任何解决此问题的帮助将不胜感激

【问题讨论】:

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


    【解决方案1】:

    在 routes 参数中,您只需设置 new { area = "OtherAreaName" }。

    编辑

    哦,我看到你已经尝试过了。我想该区域的名称在类 AreaRegistration 类中被正确引用和正确命名,像这样?

    public class AuthorAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Author";
            }
        }
    
        // ...
    }
    

    是否也可能是您需要身份验证并且您被重定向到登录页面?

    【讨论】:

    • 哦,并且需要身份验证,但是当验证失败时,它会使用查询字符串中请求的 url 重定向到登录,因此一旦他们重新登录,它就知道去哪里,而这并没有发生,所以我知道这不是身份验证问题
    • 不关注。如果查询字符串中有 returnUrl,为什么不检查登录操作。登录成功后,需要使用returnUrl参数。如果不使用,更改为开始使用
    • 我的意思是,当身份验证失败时,您最终会在查询字符串中得到一个 url,但是当我重定向到另一个区域并且最终在登录屏幕上时,查询字符串中没有参数,表明这不是身份验证失败,让我回到登录屏幕
    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2011-09-23
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多