2011-01-14 33 views
10

Có ai có thể giúp tôi về chủ đề này không? Tôi đang sử dụng công cụ Xem dao cạo và tôi cần chuyển một số dữ liệu sang _Layout. Tôi làm nó như thế nào?ASP.NET MVC 3 _Layout.cshtml Controller

Trả lời

1

Bạn có thể sử dụng ViewBag để chuyển dữ liệu.

Trong điều khiển của bạn:

ViewBag.LayoutModel = myData; 

Access trong bạn bố trí:

@ViewBag.LayoutModel 

Nó là một đối tượng năng động, vì vậy bạn có thể sử dụng bất kỳ tên thuộc tính mà bạn muốn.

1

Phương pháp ViewBag là dễ nhất. Tuy nhiên, nếu bạn cần các tính năng nâng cao và đã gõ, bạn cũng có thể thử lấy phần đó cho một phần xem (phần sẽ hiển thị phần phụ thuộc) với bộ điều khiển chung (nếu giá trị có thể được tính trên chính nó và không cần đầu vào từ các bộ điều khiển khác) và gọi RenderPartial trên nó từ _Layout.
Nếu bạn muốn tôi có thể cung cấp cho bạn một số thông tin thêm về nó ...

+2

Vâng, xin vui lòng, cho chúng ta một số thông tin thêm về nó:] – cc0

10

Như thường lệ bạn bắt đầu bằng cách tạo ra một mô hình quan điểm đại diện cho dữ liệu:

public class MyViewModel 
{ 
    public string SomeData { get; set; } 
} 

sau đó một bộ điều khiển sẽ lấy dữ liệu từ một nơi nào:

public class MyDataController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      SomeData = "some data" 
     }; 
     return PartialView(model); 
    } 
} 

sau đó một cái nhìn tương ứng (~/Views/MyData/Index.cshtml) để đại diện cho dữ liệu:

@{ 
    Layout = null; 
} 
<h2>@Model.SomeData</h2> 

và cuối cùng bên trong của bạn _Layout.cshtml bao gồm dữ liệu này ở đâu đó:

@Html.Action("index", "mydata") 
+0

Điều này có nghĩa bạn phải thêm điều này bằng tay đến từng xem. Có cách nào để chuyển dữ liệu đến _layout.cshtml cho mỗi trang không? –

+0

@Anthony Gatlin, tuyệt đối không. Bạn hoàn toàn có thể viết '@ Html.Action (" index "," mydata ")' trong _Layout => của bạn sẽ tự động thêm nó vào mọi trang trong ứng dụng của bạn sử dụng layout này. –

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