我有一个主模型和一个局部视图。局部视图的模型是没有值的新模型。但现在我想将父模型的一个元素传递给局部视图。我该怎么做呢?
父视图和部分视图具有不同的属性,因此我无法使用相同的模型。
型号:
public class Parent
{
.
.
public List<SelectListItem> TypeList { get; set; }
.
.
}
public class Partial1
{
public List<SelectListItem> TypeList1 { get; set; }
.
.
}
public class Partial2
{
public List<SelectListItem> TypeList2 { get; set; }
.
.
}
父视图:
@model Models.Parent
@Html.Partial("_Partial1", new Partial1())
@Html.Partial("_Partial2", new Partial2())
我意识到我可以使用ViewDataDictionary
将其传递给局部视图并使用它,但我想知道是否可以直接将其分配给我的局部视图模型。我可以这样做吗?
@Html.Partial("_Partial1", new Partial1(new{TypeList1 =Model.TypeList}))
上面的代码给出了编译时错误,说Partial1不包含带有1个参数的构造函数。
编辑1:
根据Chris Pratt的回答,我将我的代码修改为
@Html.Partial("_Partial1", new Partial1{TypeList1 =Model.TypeList})
这解决了编译错误。但现在这在部分视图1中导致运行时错误。
Partial1查看:
@model Models.Partial1
@Html.DropDownListFor(model => model.Type, Model.TypeList1, new { @class = "form-control" })
抛出错误&#34;没有类型&#39; IEnumerable&#39;的ViewData项目。密钥&#39;类型&#39;。&#34;
答案 0 :(得分:1)
new Partial1 { TypeList1 = Model.TypeList }
答案 1 :(得分:-1)