ModelMetadata.ContainerType返回null

时间:2015-05-27 13:28:20

标签: c# asp.net asp.net-mvc asp.net-mvc-5 html-helper

我想写一个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);
}

1 个答案:

答案 0 :(得分:0)

我认为您应该为MyItemCollection创建一个空构造函数,然后初始化Collection属性。

如果该元素未被另一个过程初始化,则会导致NULL,这反过来会导致您遇到的与思考相关的可能问题(即:查找{{1} })

我说,自己初始化房产。见下文

ViewData.ModelMetadata.ContainerType