【发布时间】:2014-02-07 09:08:55
【问题描述】:
在我的项目中,我使用了很多动态加载的视图/表单。在我的表单中,使用@Html.TextBoxFor() 生成了很多字段,然后在我的javascript 逻辑中使用了@Html.IdFor(), @Html.NameFor()。
我的一些视图模型具有相同名称的字段(ID、名称、描述等),所以如果我在 1 页上有 2 个具有此类视图模型的表单,那么我就有问题(相同的 id 属性用于超过一个元素)。
所以我想知道是否可以将一些服务器端元数据/属性添加到我的视图模型中,并带有将添加到生成的 ID 和名称的前缀?或者,如果有其他解决方案不需要重命名我的视图模型或视图。
【问题讨论】:
-
您可以通过使用编辑器模板来减少此问题的发生。要自己控制行为,您可以设置
ViewData.TemplateInfo.HtmlFieldPrefix。然后,您需要指示模型绑定器使用什么前缀,因此如果您混合字段前缀,这可能会变得很棘手。示例:public ActionResult _Edit( [Bind( Prefix = "MyPrefix" )] AModel model ) -
看起来这将需要在动作(或复制动作)中传递整个模型,在我的情况下这看起来不是一个好方法。
标签: c# asp.net-mvc asp.net-mvc-5 razor-3