2013-03-01 31 views
24

Tôi đang xây dựng một trang tiểu sử sẽ có một số phần có liên quan đến một mô hình cụ thể (Người thuê nhà) - AboutMe, MyPreferences - những thứ đó. Mỗi một phần đó sẽ là một phần xem, để cho phép cập nhật một phần trang bằng AJAX.MVC 4 - làm cách nào để chuyển dữ liệu mô hình sang chế độ xem từng phần?

Khi tôi nhấp vào ActionResult trong TenantController, tôi có thể tạo chế độ xem được nhập mạnh mẽ và dữ liệu mô hình được chuyển đến chế độ xem tốt. Tôi không thể đạt được điều này với một phần lượt xem.

tôi đã tạo ra một cái nhìn cục bộ _TenantDetailsPartial:

@model LetLord.Models.Tenant 
<div class="row-fluid"> 
    @Html.LabelFor(x => x.UserName) // this displays UserName when not in IF 
    @Html.DisplayFor(x => x.UserName) // this displays nothing 
</div> 

sau đó tôi có một cái nhìn MyProfile rằng sẽ làm cho đề cập quang cảnh một phần:

@model LetLord.Models.Tenant 
<div class="row-fluid"> 
    <div class="span4 well-border"> 
     @Html.Partial("~/Views/Tenants/_TenantDetailsPartial.cshtml", 
     new ViewDataDictionary<LetLord.Models.Tenant>()) 
    </div> 
</div> 

Nếu tôi quấn mã bên trong DIV trong _TenantDetailsPartial bên trong @if(model != null){} không có gì được hiển thị trên trang, vì vậy tôi đoán có một mô hình trống đang được chuyển đến chế độ xem.

Làm cách nào để tạo chế độ xem được nhập mạnh mẽ từ ActionResult người dùng trong 'phiên' được chuyển đến chế độ xem? Làm cách nào để chuyển người dùng trong 'phiên' sang chế độ xem một phần không được tạo từ một số ActionResult? Nếu tôi thiếu một cái gì đó về khái niệm, xin vui lòng giải thích.

Trả lời

53

Bạn không thực sự chuyển mô hình đến một phần, bạn đang chuyển một số new ViewDataDictionary<LetLord.Models.Tenant>(). Hãy thử điều này:

@model LetLord.Models.Tenant 
<div class="row-fluid"> 
    <div class="span4 well-border"> 
     @Html.Partial("~/Views/Tenants/_TenantDetailsPartial.cshtml", Model) 
    </div> 
</div> 
+4

Tôi thực sự cố gắng mà trước đó và nó đã không làm việc! Tôi không được xây dựng lại giải pháp của mình ... Cảm ơn, nó hoạt động. – MattSull

10

Ngoài ra, điều này có thể làm cho nó hoạt động:

@{ 
Html.RenderPartial("your view", your_model, ViewData); 
} 

hoặc

@{ 
Html.RenderPartial("your view", your_model); 
} 

Để biết thêm thông tin về renderPartial và người trợ giúp HTML tương tự trong MVC thấy this popular StackOverflow thread

4

Ba cách để chuyển dữ liệu mô hình sang một phần xem (có thể có m quặng)

Đây là lần xem trang

Phương pháp Một cư tại xem

@{  
    PartialViewTestSOl.Models.CountryModel ctry1 = new PartialViewTestSOl.Models.CountryModel(); 
    ctry1.CountryName="India"; 
    ctry1.ID=1;  

    PartialViewTestSOl.Models.CountryModel ctry2 = new PartialViewTestSOl.Models.CountryModel(); 
    ctry2.CountryName="Africa"; 
    ctry2.ID=2; 

    List<PartialViewTestSOl.Models.CountryModel> CountryList = new List<PartialViewTestSOl.Models.CountryModel>(); 
    CountryList.Add(ctry1); 
    CountryList.Add(ctry2);  

} 

@{ 
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",CountryList); 
} 

Phương pháp thứ hai đèo Qua ViewBag

@{ 
    var country = (List<PartialViewTestSOl.Models.CountryModel>)ViewBag.CountryList; 
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",country); 
} 

Phương pháp Ba đi qua mô hình

@{ 
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",Model.country); 
} 

enter image description here

+0

bạn cũng có thể đặt mã xem một phần không.Tôi không nhận được bất cứ điều gì khi sử dụng phương pháp thứ hai để vượt qua giá trị để xem một phần –

+0

@HeemanshuBhalla Tôi nghĩ rằng var countries = ViewBag.CountryList là List có thể cung cấp cho bạn giá trị –