Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 嵌套局部视图传递子对象问题_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

Asp.net mvc 嵌套局部视图传递子对象问题

Asp.net mvc 嵌套局部视图传递子对象问题,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,我试图将局部视图中的子对象传递给另一个,但总是会出现错误。谁能帮我解决这个问题?T.T “传递到字典中的模型项的类型为'Application.Models.PetModel',但此字典需要'Application.Models.Calendar'类型的模型项” 主要型号 public class PetModel { public string Name { get; set; } public long SpeciesID { get; set; } public

我试图将局部视图中的子对象传递给另一个,但总是会出现错误。谁能帮我解决这个问题?T.T

“传递到字典中的模型项的类型为'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; }

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

    }
子模型

public class PetModel
{

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

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

    }
主视图

@model Application.Models.PetModel
@using (Html.BeginForm("CatchPetContent", "Quote",Model))
{
    @Html.Partial("PetDetailsContent", Model)
    <input type="submit" value="submit" />
}
@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)
@model Application.Models.Calendar
 @Html.TextBoxFor(x => x.Day)
 @Html.TextBoxFor(x => x.Month)
 @Html.TextBoxFor(x => x.Year)
PetModel不包含“PetName”

PetDetails内容局部视图

@Html.TextBoxFor(x => x.PetName)
改变这个,

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

您在PetModel中具有类型Calendar的DOB属性

我也有同样的问题。在我的例子中,只要子模型为null,框架就会将主模型传递给局部视图


作为一种解决方法,我在将子模型传递给局部视图之前检查它是否为null。如果为空,则我要么根本不显示局部视图,要么创建子模型的实例。(同样,这是一个解决方法,直到我找到了解决这个问题的正确方法。如果有。)

您可以尝试使用
@Html.Partial(“UserControl/Calendar”,Model.DOB)
而不是RenderPartial。我知道在某些情况下,RenderPartial不允许正确传回值。

这是我的输入错误,我已经纠正了,主要问题是将子模型传递到嵌套的局部视图。这是我的输入错误,我已经纠正了,主要问题是将子模型传递到嵌套的局部视图。