2010-01-08 4 views
7

Tôi muốn chuyển hướng đến một tuyến đường mà còn chỉ định hành động để chạy trên bộ điều khiển của tuyến đường đó.Response.RedirectToRoute với một hành động được chỉ định

Tôi cố gắng này:

Response.RedirectToRoute("Login", new { action = "ChangePassword" }); 

Hành động trông như thế này:

public ActionResult ChangePassword() 
{} 

Tuyến trông như thế này:

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

Các lỗi tôi nhận được là:

System.NotImplemented Ngoại lệ: Phương thức hoặc hoạt động không được triển khai.

Bạn có thể thấy những gì tôi đang làm sai không?

+2

Đó là một [lỗi] (http://blog.slaks.net/2011/11/beware-of-responseredirecttoroute-in.html) trong MVC3. @ ajay_whiz của giải pháp làm việc cho tôi. – booyaa

Trả lời

0

Vâng, bạn chỉ nhận được NotImplementedException khi có điều gì đó ném nó. Vì vậy, nhìn vào dấu vết ngăn xếp (Call Stack) và tìm các thói quen mà ném nó. Khi VS tự động thực hiện một giao diện, ví dụ, cơ thể sẽ ném này; bạn dự kiến ​​sẽ thay thế việc triển khai.

+0

Đây là phần trên cùng của ngăn xếp: tại System.Web.HttpResponseBase.RedirectToRoute (String routeName, Object routeValues) tại MVCApp.Controllers.LoginController.TryFormsLogin (Tên người dùng chuỗi, Mật khẩu chuỗi) trong C: \ Dev \ AspenMVCTemplate \ Src \ Main \ MVCApp \ MVCApp \ Controllers \ LoginController.cs: dòng 110 –

+0

Vậy IE RedirectToRoute có ném ngoại lệ đúng không? –

+0

Không, 'RedirectToRoute' sẽ không ném điều này. Nhưng điều mà 'RedirectToRoute' cuối cùng sẽ gây ra * được gọi là * (nói, một hàm gọi là hành động của bạn) chỉ có thể. Hãy thử nhìn vào một ngăn xếp trên bất kỳ 'InnerException' bạn có thể có. –

9

Tôi cũng gặp khó khăn với điều này. Tôi đã làm điều này

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

Bất kỳ cách nào để truy cập phương pháp này không có trong bộ điều khiển? – Shimmy

+0

@Shimmy bạn muốn truy cập ở đâu? –

+0

'Application_Error'. Rõ ràng là có thể tạo một cá thể mới, đặt câu hỏi nếu một cá thể tĩnh tồn tại ở bất cứ nơi nào xung quanh. – Shimmy

-2
return Redirect(Url.RouteUrl(new { controller = "Controller", action = "Action" })); 
+2

Câu trả lời này là bản sao chính xác của [this] (http://stackoverflow.com/a/5975320/75500) một câu trả lời đã được đăng trước đó. – Shimmy