2011-08-31 35 views
9

Vì vậy, tôi chỉ có HttpPostActionResult được gọi là Edit. Sau khi thực hiện điều đó (logic vv), tôi muốn nó chuyển hướng đến một bộ điều khiển khác. Cho phép nói số HomeController. Ở đây là:MVC3 Chuyển hướng đến tuyến đường từ ActionResult

[HttpPost] 
public ActionResult Edit(Chair chair, string xml) 
{ 
    if (ModelState.IsValid) 
    { 
     try 
     { 
      _repository.EditChair(chair, xml); 
      return RedirectToRoute(new { contoller = "Home", action = "index"}); 
     } 
     catch (Exception ex) 
     { 
      //error msg for failed edit in XML file 
      ModelState.AddModelError("", "Error editing record. " + ex.Message); 
     } 
    } 
    return View(Chair); 

} 

Ive tryed những thứ khác như return RedirectResult(), RedirectToAction(), RedirectToRoute("string") - nhưng nó vẫn giữ được trả lại xem chỉ số từ bộ điều khiển phương pháp Edit là trong (ChairController).

Làm cách nào để thực hiện việc này ??

+1

Dưới đây là một cái gì đó tương tự đã ... [như thế nào RedirectToRoute nghĩa vụ phải được sử dụng?] [1] Hy vọng nó sẽ giúp ... [1]: http: // stackoverflow. com/questions/1290355/how-is-redirecttoroute-được-để-được sử dụng –

+0

@Jan Cảm ơn. Nó có vẻ là làm việc cho anh chàng đó trong bài viết, nhưng không phải cho tôi: S FML –

+1

@ Tôi đoán tôi hiểu lầm câu hỏi của bạn. Tôi nghĩ bạn đã nói trở lại cùng một hành động –

Trả lời

5

Wow điều wierdest bao giờ gây ra điều này. Mã đã đúng (như tôi đã chắc chắn bắt đầu với). Tôi cố gắng gỡ lỗi nó một lần nữa, và nhận thấy khi tôi đã đi qua mã, rằng thingo trình gỡ lỗi chỉ đánh dấu một số mã: return RedirectToAction("Index", Nó thực sự dừng lại ở đó, và không đi qua các "Home");. Tôi cũng nhận thấy rằng điểm ngắt của tôi thực sự là màu vàng, và đã nói với tôi điều gì đó về mã nguồn không giống với bản gốc? Cái gì cơ? Nó tiếp tục nói rằng thông qua hàng trăm tiết kiệm, khởi động lại, xây dựng và xây dựng lại. Trong số các màu xanh nó chấp nhận mã, breakpoint của tôi chuyển sang màu đỏ, mã làm việc tốt.

Thực sự xin lỗi vì đã thu hẹp thời gian của bạn!

+1

Có thể bạn đã quên khởi động lại máy chủ phát triển của mình :-P –

18

Typo:

contoller = "Home" 

nên

controller = "Home" 

hay:

return RedirectToAction("index", "home"); 
+1

Woops. Lỗi đánh máy. Nhưng yeah như đã nêu trong câu hỏi của tôi, đã thử RedirectToAction(). Không hoạt động. –

+1

@Kasper Skov, trừ khi bạn đã làm hỏng điều gì đó với định nghĩa tuyến đường của bạn 'return RedirectToAction (" index "," home ");' hoạt động hoàn toàn ổn. –

+0

Hehe tôi biết. Của nó f * cked lên. Hãy xem câu trả lời của riêng tôi. Xin lỗi vì đã giao phối thời gian của bạn. –

Các vấn đề liên quan