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。使用模型