2010-03-29 25 views
13

Nói rằng tôi có:Làm cách nào để chuyển hướng trong chức năng ViewResult hoặc ActionResult?

public ViewResult List() 
{ 
    IEnumerable<IModel> myList = repository.GetMyList(); 
    if(1 == myList.Count()) 
    { 
     RedirectToAction("Edit", new { id = myList.Single().id }); 
    } 

    return View(myList); 
} 

Bên trong hàm này, tôi kiểm tra nếu có chỉ có một mục trong danh sách, nếu có tôi muốn chuyển hướng thẳng tới bộ điều khiển để xử lý các mục trong danh sách, nếu không tôi muốn hiển thị Chế độ xem danh sách.

Làm cách nào để thực hiện việc này? Chỉ cần thêm RedirectToAction không hoạt động - cuộc gọi bị trúng nhưng VS chỉ cần thực hiện bước đó và cố gắng trả lại Chế độ xem ở dưới cùng.

Trả lời

21

Bạn cần phải return RedirectToAction thay vì chỉ gọi phương thức RedirectToAction. Ngoài ra, phương pháp của bạn sẽ cần trả về một số ActionResult là loại trả lại tương thích với cả hai số ViewResultRedirectToRouteResult.

public ActionResult List() 
{ 
    IEnumerable<IModel> myList = repository.GetMyList(); 
    if(1 == myList.Count()) 
    { 
     return RedirectToAction("Edit", new { id = myList.Single().id }); 
    } 

    return View(myList); 
} 
+2

Điều đó làm việc sau khi thay đổi kiểu trả về hàm thành ActionResult, chúc mừng! – Pete

+0

Đã đập đầu tôi vào bàn suốt buổi sáng cố gắng hiểu tại sao RedirectToAction() không hoạt động trong bộ điều khiển của tôi! Quá dễ! –

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