【发布时间】:2017-09-29 17:59:33
【问题描述】:
我有一个主模型和一个局部视图。局部视图的模型是没有值的新模型。但现在我想将父模型的一个元素传递给局部视图。我该怎么办?
父视图和部分视图具有不同的属性,所以我不能使用相同的模型。
型号:
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 中出现运行时错误。
部分1视图:
@model Models.Partial1
@Html.DropDownListFor(model => model.Type, Model.TypeList1, new { @class = "form-control" })
抛出错误“没有具有键 'Type' 的 'IEnumerable' 类型的 ViewData 项。”
【问题讨论】:
-
为什么在
Partial1中没有2 个List<SelectListItem>属性? -
是的,应该可以正常工作。这里的实际问题是什么?
-
@ChrisPratt 我收到一个编译时错误,提示 Partial1 不包含采用 1 个参数的构造函数。
-
@TheFallenOne 请完整定义您想要实现的目标
-
关于您的编辑 - 这意味着
Partial1中的TypeList1是null(有关更多详细信息,请参阅 this Q/A)这可能是因为Parent中的TypeList也是 @987654335 @)
标签: c# asp.net-mvc partial-views