RedirectToAction()转到index()而不是去动作?

时间:2012-10-09 15:12:07

标签: c# asp.net asp.net-mvc post asp.net-mvc-routing

我对这段代码片段感到有些困惑。我在httpPost动作中有以下内容

if(returnUrl.StartsWith("/AssetResearch/InvestorApproval"))
{
    return RedirectToAction("InvestorApproval", "AssetResearch");
}

但我的代码每次都转到我的index()动作。这可能发生的原因是什么? RedirectToAction不应该触发我的行动吗?

编辑:是的,它出现在if语句中。

3 个答案:

答案 0 :(得分:1)

代码

return RedirectToAction("InvestorApproval", "AssetResearch");

将重定向到Controller“AssetResearch”操作方法“InvestorApproval”

1)听起来很傻,但请确保您在课程中正确拼写了InvestorApproval的动作方法名称

2)确保如果该操作采用您创建的数据和传递它的routevalue字典,您可以尝试

  return RedirectToAction(new RouteValueDictionary( new{ controller = "AssetResearch", action = "InvestorApproval", data="blah" } )

答案 1 :(得分:1)

如果您可以直接访问/AssetResearch/InvestorApproval,那么

return RedirectToAction("InvestorApproval", "AssetResearch");

会显示InvestorApproval操作方法,如果没有,我猜您已路由到索引页面,因为您在Application_Start文件的Global.asax方法中配置了路由。

答案 2 :(得分:1)

您可以开始使用路由进行调试吗?如下......

enter image description here

您只需要在项目中添加一个Dll即可。您可以查看 here

最后添加以下代码行

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

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", 
                     id = UrlParameter.Optional } // Parameter defaults
    );
    RouteDebug.RouteDebugger.RewriteRoutesForTesting(routes);
}