ASP.NET MVC RedirectToAction不会重定向到另一个控制器的索引

时间:2017-05-18 08:48:03

标签: c# asp.net-mvc redirecttoaction

在我的帐户/登录控制器方法中,我有类似的内容:

var classA = GetObject(); //actual code omitted
switch(classA.PropA)
{
    case 1:
        return RedirectToAction("Action2", "Registration");
    //more case code omitted
    default:
        return RedirectToAction("Index", "Registration");
}

所有的情况都可以在switch块中正常工作,除了默认情况下它会在RegistrationController中转到Index。而不是那样,它需要我到localhost:port / Registration,其中省略了动作索引。

如果将ActionName更改为其他内容,则可以正常工作 - 例如,Index2。如果将控制器名称更改为其他内容,也可以正常工作。

RouteConfig是 只是创建项目的自动生成代码,如下所示:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
     }

提前致谢。

3 个答案:

答案 0 :(得分:3)

路线设置Index中不包含URL的原因没有任何问题,因为根据default route

url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

当您输入/Registration时,路线已经知道index的默认操作,因此它不会在/index

中添加URL
  

403.14禁止

如果您查看此帖子HTTP Error 403.14 - Forbidden - MVC 4 with IIS Express,可能是因为您可能在项目目录中有一个名为Registration的文件或文件夹

答案 1 :(得分:1)

如果您使用RedirectionToAction("Index","ControllerName"); 它会使用默认映射配置将您重定向到localhost:port/ControllerName 在您的情况下,如果您执行RedirectionToAction("Index","ControllerName");,它会将您重定向到 localhost:port/Registration

答案 2 :(得分:0)

尝试使用

return RedirectToAction("Index");

在RouteConfig中你可以路由Action" Index"控制器"注册"

喜欢

routes.MapRoute("Index", "Index", new { controller = "Registration", action = "Index" });