ASP.Net MVC chuyển hướng sang một chế độ xem khác


88

Có thể chuyển hướng đến một chế độ xem khác với bộ điều khiển không?

Ví dụ: tất cả các bộ điều khiển của tôi kế thừa từ một bộ điều khiển tùy chỉnh có hàm tạo mà tôi muốn chuyển hướng đến chế độ xem khác nếu một số tiêu chí nhất định không được đáp ứng. Hy vọng điều đó có ý nghĩa.

Câu trả lời:


144

Bạn có thể sử dụng RedirectToAction()phương pháp này, sau đó hành động bạn chuyển hướng đến có thể trả về một Dạng xem. Cách dễ nhất để làm điều này là:

return RedirectToAction("Index", model);

Sau đó, trong phương thức Chỉ mục của bạn, hãy trả về dạng xem bạn muốn.


1
Nếu tôi đã làm theo cách này, làm cách nào để trả về một chế độ xem cụ thể từ một Hành động của bộ điều khiển.
Gavin

18
return View ("ViewName");
Craig Stuntz

11
@Craig - Chế độ xem trả về không thực hiện chuyển hướng và URL kết thúc giống như trước đây. Vì vậy, nếu bạn đang ở "/ edit / MyItem" thì việc trả về View ("showitem") sẽ cung cấp cho bạn chế độ xem "showitem" với url "/ edit /". Tùy thuộc vào tình huống của bạn, điều này có thể hoạt động, nhưng không phải lúc nào.
jeffreypriebe

5
@jeffrey, đó là hai bước riêng biệt: Chuyển hướng trong hành động đầu tiên, như John đã nói, sau đó trả lại Chế độ xem trong hành động thứ hai. Hành động đầu tiên không thể (trực tiếp, dù sao) cho thứ hai biết nên sử dụng chế độ xem nào.
Craig Stuntz

@Craig giúp một chút. Có một "hành động" và một "quan điểm" - hai thứ riêng biệt. Tại sao câu trả lời dưới đây của tôi lại hoạt động: RedirectToAction - không thay đổi Chế độ xem. Tôi chắc chắn đây là .net MVC 101 nhưng tôi không hiểu. Cảm ơn.
jeffreypriebe

19
 if (true)
 {
   return View();
 }
 else
 {
   return View("another view name");
 }

2
Điều này sử dụng cùng một Hành động điều khiển. RedirectToAction gọi một hành động khác. Đây là giải pháp dễ dàng nhất cho tôi.
RaoulRubin

6

Cách đơn giản nhất là sử dụng return View.

return View("ViewName");

Hãy nhớ rằng, tên thực của "ViewName" phải là ViewName.cshtml trong dự án của bạn, nếu bạn đang sử dụng MVC C # / .NET.


4

Tôi không chắc chắn 100% các điều kiện cho việc này là gì, nhưng đối với tôi, những điều trên không hoạt động trực tiếp, tôi nghĩ rằng nó đã gần kề. Tôi nghĩ đó là vì tôi cần "id" cho chế độ xem của mình bởi trong mô hình, nó được gọi là "ObjectID".

Tôi đã có một mô hình với nhiều loại thông tin. Tôi chỉ cần id.

Trước khi ở trên, tôi đã tạo một đối tượng System.Web.Routing.RouteValueDictionary mới và thêm id cần thiết.

(System.Web.Routing.)RouteValueDictionary RouteInfo = new RouteValueDictionary();
RouteInfo.Add("id", ObjectID);
return RedirectToAction("details", RouteInfo);

(Lưu ý: dự án MVC được đề cập mà tôi không tạo, vì vậy tôi không biết tất cả các bit "khó hiểu" ở đâu.)


3

Đây là những gì bạn có thể làm:

return View("another view name", anotherviewmodel);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.