C# 将附加视图数据传递给EditorFor的正确方法

C# 将附加视图数据传递给EditorFor的正确方法,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,如果我像这样传递视图数据 @(Html.EditorFor(x => x.User2, "GenericList", new ViewDataDictionary { { "ListType", ListType.CustomValidation }, { "Param1", ObjectType.Asset }, { "Param2", "User2" }, { "DefaultValue", M

如果我像这样传递视图数据

@(Html.EditorFor(x => x.User2, "GenericList", 
     new ViewDataDictionary { 
         { "ListType", ListType.CustomValidation }, 
         { "Param1", ObjectType.Asset }, 
         { "Param2", "User2" }, 
         { "DefaultValue", Model.User2 } 
      }
 ))
我无法通过ViewData[“ListType”]访问这些值。键存储在名为keys的属性中,值存储在名为values的ICollection属性中

以这种方式传递ViewData

@Html.EditorFor(x => x.User2, "GenericList", 
    new { ListType = ListType.CustomValidation, 
          Param1 = ObjectType.Asset, 
          Param2 = "User2", 
          DefaultValue = Model.User2 
    }
 )
这意味着我可以像ViewData[“ListType”]一样轻松获取值


我不喜欢第二种方法,因为它使用匿名类型而不是ViewDataDictionary。如何使用第一个方法,但仍按预期调用ViewData,

不重载
EditorFor()
,它接受
ViewDataDictionary
字典作为
additionalViewData
(它必须是一个
对象
whse值与模型合并
ViewDataDictionary
。如果您真的想这样做,可以创建自己的扩展方法。不要这样做。使用元数据属性。使用具有描述视图模型的属性的对象。它是MVC。使用模型