Asp.net mvc 带有指定操作的Response.RedirectToRoute

Asp.net mvc 带有指定操作的Response.RedirectToRoute,asp.net-mvc,routing,Asp.net Mvc,Routing,我希望重定向到某个路由,但同时指定要在该路由的控制器上运行的操作 我试过这个: Response.RedirectToRoute("Login", new { action = "ChangePassword" }); 操作如下所示: public ActionResult ChangePassword() {} routes.MapRoute("Login", "Login/{action}", new { controller = "Login", action = "Index" }

我希望重定向到某个路由,但同时指定要在该路由的控制器上运行的操作

我试过这个:

Response.RedirectToRoute("Login", new { action = "ChangePassword" });
操作如下所示:

public ActionResult ChangePassword()
{}
routes.MapRoute("Login", "Login/{action}", new { controller = "Login", 
action = "Index" } );
路线如下所示:

public ActionResult ChangePassword()
{}
routes.MapRoute("Login", "Login/{action}", new { controller = "Login", 
action = "Index" } );
我得到的错误是:

System.NotImplementedException:方法或操作未实现


你能看出我做错了什么吗?

好吧,只有当有东西抛出异常时,你才会得到
NotImplementedException
。因此,查看堆栈跟踪(调用堆栈)并找到抛出它的例程。例如,当VS自动实现一个接口时,body将抛出该接口;您需要替换实现。

我也很难做到这一点。是我干的

Response.Redirect(Url.RouteUrl(new{ controller="controller", action="action"}));

这是堆栈的顶部:在C:\Dev\AspenMVCTemplate\Src\Main\MVCApp\MVCApp\Controllers\LoginController.TryFormsLogin(字符串用户名,字符串密码)中的MVCApp.Controllers.LoginController.TryFormsLogin(字符串用户名,字符串密码)处的System.Web.HttpResponseBase.RedirectToRoute(字符串routeName,对象routeValues)。但是,
RedirectToRoute
最终导致调用的东西(比如,由您的操作调用的函数)可能会被调用。尝试查看任何
InnerException
上的堆栈。我不相信该操作会被调用,因为我可以手动转到该操作的URL,这样就可以了。我想问题在于我调用了RedirectToRoute()。我想它找不到路线什么的。我只是不明白为什么。动作本身是完美的。RouterDirect是我困惑的地方。
RedirectToRoute
根本不会(直接)抛出任何异常。我只是查看了MVC源代码来确认这一点。其他函数抛出了这个异常。@qntmfred是的,他提出了一个非常有说服力的例子,这是一个bug。这是MVC3中的一个错误@ajay_whiz的解决方案对我很有效。有没有办法在控制器之外访问此方法?@Shimmy您想在哪里访问它?
应用程序错误
。显然可以创建一个新实例,询问周围是否存在静态实例。您可以使用
UrlHelper.GenerateUrl()
方法。要获取RequestContext,您可以编写
((MvcHandler)HttpContext.Current.Handler)。RequestContext
Men you save my day(y)此答案与先前发布的答案完全相同。