我们使用 ASP.NET MVC 的 HTML 帮助程序来生成表单,因此表单字段的名称也由这些 HTML 帮助程序生成。
每当我通过 AJAX 将局部视图加载到当前页面(e.g. 进入模态对话框)时,如果此局部视图的模型包含的字段与原始视图模型中的其他字段相同,则会遇到问题(因为 ASP.NET MVC 生成相同的 ID)。
有没有办法告诉局部视图使用特定前缀呈现其字段(以这种方式,后来的模型绑定理解那些前缀名称)?
目前我们将局部视图模型中的字段重命名为“PartialDateOfBirth”,以便不干扰原始页面的模型“DateOfBirth”,但是如果您通过 AJAX 将相同的局部视图多次加载到页面中,这很糟糕并且不起作用...
问题的最佳实践解决方案?
2 回答
这就是我要做的事情:
将其保存为项目中的 HtmlPrefixScopeExtensions.cs
然后从例如更改您的视图:
至:
最后但同样重要的是,不要忘记在匹配 HtmlPrefixScopeExtensions.cs 位置的视图中包含 using 语句,例如:
或者将正确的命名空间添加到 Views/Web.config(这是推荐的选项,你只需要执行一次!):
现在:字段名称将为例如“Country.Name”
然后,您必须在帖子 e.g 中具有匹配的名称:
致谢:我剥夺了史蒂夫桑德森精彩的 BeginCollectionItem 课程
创建自己的 Helper 方法来传递带 ID 的前缀,这不是一个大问题。