2013-05-14 9 views
5

Tôi đang cố gắng chuyển đối tượng phụ trong một phần xem khác, và tôi luôn luôn nhận được lỗi. Bất cứ ai có thể giúp tôi giải quyết vấn đề này? TTLồng nhau Một phần xem qua vấn đề đối tượng phụ

"Mô hình mục đã qua vào từ điển là loại 'Application.Models.PetModel', nhưng từ điển này đòi hỏi phải có một mục mô hình của loại 'Application.Models.Calendar"

mô hình chính

public class PetModel 
{ 

    public string Name { get; set; } 
    public long SpeciesID { get; set; } 
    public long BreedID { get; set; } 
    public Calendar DOB { get; set; } 

} 

Sub mẫu

public class Calendar 
    { 
     public int Day { get; set; } 
     public int Month { get; set; } 
     public int Year { get; set; } 

     public DateTime DateObj 
     { 
      get 
      { 
       if (Day != 0 && Month != 0 && Year != 0) 
       { 
        return new DateTime(Year, Month, Day); 
       } 

       return DateTime.Now; 
      } 

      set 
      { 
       if (value != null) 
       { 
        Day = value.Day; 
        Month = value.Month; 
        Year = value.Year; 
       } 
      } 
     } 

    } 

Main Xem

@model Application.Models.PetModel 
@using (Html.BeginForm("CatchPetContent", "Quote",Model)) 
{ 
    @Html.Partial("PetDetailsContent", Model) 
    <input type="submit" value="submit" /> 
} 

PetDetailsContent phần Xem

@model Application.Models.PetModel 
@Html.TextBoxFor(x => x.Name) 
@Html.DropDownListFor(x => x.SpeciesID, (IEnumerable<SelectListItem>)ViewData["TypeList"], "--Please Select--") 
@Html.DropDownListFor(x => x.BreedID, (IEnumerable<SelectListItem>)ViewData["BreedList"], "--Please Select--") 
@Html.RenderPartial("UserControl/Calendar", Model.DOB) 

Lịch Nhìn ra một khoảng

@model Application.Models.Calendar 
@Html.TextBoxFor(x => x.Day) 
@Html.TextBoxFor(x => x.Month) 
@Html.TextBoxFor(x => x.Year) 

Trả lời

0

PetModel không chứa "PetName"

PetDetailsContent phần Xem

@Html.TextBoxFor(x => x.PetName) 
+0

Đây là lỗi đánh máy của tôi, tôi đã sửa lỗi đó, vấn đề chính là chuyển mô hình phụ sang chế độ xem một phần lồng nhau. – user2376512

1

Thay đổi này,

@Html.RenderPartial("UserControl/Calendar", Model.DOB) 

bạn có loại tài sản của Calender DOB trong mô hình PetModel của bạn.

+0

Đó là lỗi đánh máy của tôi, tôi đã sửa chữa nó, vấn đề chính là đi qua mô hình phụ để xem một phần lồng nhau. – user2376512

4

Tôi gặp vấn đề tương tự. Trong trường hợp của tôi bất cứ khi nào mô hình phụ là null, khung công tác sẽ chuyển mô hình chính sang chế độ xem một phần.

Để giải quyết sự cố, tôi kiểm tra xem mô hình phụ có rỗng hay không trước khi chuyển sang chế độ xem một phần. Nếu null của nó sau đó tôi hoặc là không hiển thị xem một phần ở tất cả hoặc tạo một thể hiện của mô hình phụ. (Một lần nữa, giải pháp của nó cho đến khi tôi tìm ra giải pháp thích hợp cho vấn đề này. Nếu có một giải pháp.)

1

Bạn có thể thử sử dụng @Html.Partial("UserControl/Calendar", Model.DOB) thay vì RenderPartial. Tôi biết trong một số trường hợp, RenderPartial không cho phép các giá trị truyền lại đúng cách.