我想写一个HTML帮助方法。在我的帮助方法中,我想知道主模型的类型(如果有的话)。为了获得这一点,我使用了htmlHelper.ViewData.ModelMetadata.ContainerType
,但是当我在模板视图中调用助手时,或者可能是部分视图,其模型是集合的项目时,我无法找到任何方法。在这种情况下,htmlHelper.ViewData.ModelMetadata.ContainerType
返回null。
样本模型:
public class MyItemCollection
{
public List<MyItemContainer> Collection { get; set; }
}
示例EditorTemplate:
@model Test.MyItemContainer
@Html.MyHelper(m=>m.Item)
示例视图:
@model Test.MyItemCollection
@for(int i = 0; i < Model.Collection.Count; i++)
{
@Html.EditorFor(m=>m.Collection[i])
}
示例动作:
public ActionResult Index()
{
var m = new MyItemCollection();
//Fetching items from Business Logic
m.Collection = FetchItems();
return View(m);
}
答案 0 :(得分:0)
我认为您应该为MyItemCollection
创建一个空构造函数,然后初始化Collection
属性。
如果该元素未被另一个过程初始化,则会导致NULL
,这反过来会导致您遇到的与思考相关的可能问题(即:查找{{1} })
我说,自己初始化房产。见下文
ViewData.ModelMetadata.ContainerType