嵌套的部分视图传递子对象问题

use*_*512 5 asp.net-mvc razor asp.net-mvc-4

我试图将局部视图中的子对象传递给另一个,我总是得到错误.任何人都可以帮我解决这个问题吗?TT

"传递到字典中的模型项是'Application.Models.PetModel'类型,但是这个字典需要'Application.Models.Calendar'类型的模型项"

主要型号

public class PetModel
{

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

}
Run Code Online (Sandbox Code Playgroud)

子模型

   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;
                }
            }
        }

    }
Run Code Online (Sandbox Code Playgroud)

主视图

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

PetDetailsContent部分视图

@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)
Run Code Online (Sandbox Code Playgroud)

日历部分视图

@model Application.Models.Calendar
 @Html.TextBoxFor(x => x.Day)
 @Html.TextBoxFor(x => x.Month)
 @Html.TextBoxFor(x => x.Year)
Run Code Online (Sandbox Code Playgroud)

Öme*_*lak 0

PetModel 不包含“PetName”

PetDetails内容部分视图

@Html.TextBoxFor(x => x.PetName)
Run Code Online (Sandbox Code Playgroud)