2013-01-31 27 views
5

Tôi làm cách nào để đính kèm Chế độ xem hiện tại vào một hành động? Ý tôi là, tôi đã đính kèm chính Chế độ xem này vào một hành động, nhưng điều tôi muốn là đính kèm vào Hành động thứ hai.Cách đính kèm Chế độ xem hiện tại vào hành động của bộ điều khiển?

Ví dụ: Tôi đã thực hiện Hành động có tên Chỉ mục và Chế độ xem, cùng tên, được đính kèm, nhấp chuột phải, thêm chế độ xem ..., nhưng bây giờ, cách đính kèm vào thẻ thứ hai? Giả sử một hành động được gọi là Index2, làm thế nào để đạt được điều này?

Dưới đây là các mã:

//this Action has Index View attached 
public ActionResult Index(int? EntryId) 
{ 
    Entry entry = Entry.GetNext(EntryId); 

    return View(entry); 
} 

//I want this view Attached to the Index view... 
[HttpPost] 
public ActionResult Rewind(Entry entry)//...so the model will not be null 
{ 
    //Code here 

    return View(entry); 
} 

Tôi googled nó và không thể tìm thấy một câu trả lời thích hợp ... Có thể?

Trả lời

5

bạn không thể "đính kèm" hành động để xem nhưng bạn có thể xác định kiểu hiển thị bạn muốn được trả lại bởi một phương pháp hành động bằng cách sử dụng Controller.View Phương pháp

public ActionResult MyView() { 
    return View(); //this will return MyView.cshtml 
} 
public ActionResult TestJsonContent() { 
    return View("anotherView"); 
} 

http://msdn.microsoft.com/en-us/library/dd460331%28v=vs.98%29.aspx

+0

Khi tôi bấm chuột phải vào Action menu ngữ cảnh cho thấy tôi Add Xem tùy chọn, đó là ok. Vì vậy, tôi không thể Thêm Xem này vào một hành động khác? –

+0

bạn có thể thêm chế độ xem mới vào dự án của mình theo cách thủ công rồi trả lại chế độ xem bằng cách sử dụng mã ở trên –

+0

Tôi không muốn thêm Chế độ xem mới, tôi muốn sử dụng lại Chế độ xem hiện tại bằng Hành động khác được đặt tên khác ... –

4

Liệu sự giúp đỡ này? Bạn có thể sử dụng sự quá tải của Xem để xác định một cái nhìn khác nhau:

public class TestController : Controller 
{ 
    // 
    // GET: /Test/ 

    public ActionResult Index() 
    { 
     ViewBag.Message = "Hello I'm Mr. Index"; 

     return View(); 
    } 


    // 
    // GET: /Test/Index2 
    public ActionResult Index2() 
    { 
     ViewBag.Message = "Hello I'm not Mr. Index, but I get that a lot"; 

     return View("Index"); 
    } 


} 

Đây là View (Index.cshtml):

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p>@ViewBag.Message</p> 
+1

Trong ví dụ của bạn, nó sẽ trở về Chế độ xem ("Chỉ mục", mục nhập); –

+0

Trên thực tế, không ... Tôi cần phải chuyển mô hình làm đối số cho hành động. –

+1

Tôi có nghĩa là bạn có thể thay thế dòng dưới '// Code here',' return View (entry); 'trong mã của bạn với' return View ("Index", entry); ' –

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