Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何重定向到MVC3中的其他区域?_C#_Asp.net Mvc 3_Routing_Asp.net Mvc Areas_Asp.net Mvc 3 Areas - Fatal编程技术网

C# 如何重定向到MVC3中的其他区域?

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

目前我有3个方面(当我开始工作时,还会有更多方面):
登录
用户
管理
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,但当我重定向到另一个区域并在登录屏幕上结束时,查询字符串中没有参数,这表明将我发送回登录屏幕不是身份验证失败