asp.net-mvc-2 - ASP.NET MVC 2 动态生成模型中的数据注释

标签 asp.net-mvc-2 data-annotations html-helper

我正在创建一个 asp.net mvc 2 应用程序,根据用户输入动态生成我的 View 模型。简单地说,用户可以选择他想在他的 View 中看到哪些字段。

由于模板化助手严重依赖模型属性和属性(数据注释),我需要在运行时以某种方式将属性添加到 View 模型。不用说,这不是一项简单的任务。

那么,你们建议我在这种情况下做什么?我无法静态添加属性,所以我应该继续尝试动态添加它们,即使工作量很大,还是应该尝试使用不同的方法?

提前致谢!

费利佩

最佳答案

自定义模型绑定(bind)器只会在绑定(bind)部分为您提供帮助。它对模板化帮助程序或 ASP.NET MVC 的其他功能没有帮助。

我建议通过继承 ModelMetadataProvider 来编写自定义元数据提供程序。并使用 ModelMetadataProviders 在 global.asax 中注册您的提供商.自定义元数据提供程序可以从任何地方获取其元数据:CLR 属性、XML 文件、数据库或随机数生成器。内置的数据注释提供程序当然使用 CLR 属性。

您可能想查看内置数据注释元数据提供程序的源代码,以查看如何实现提供程序的示例。您可以从 the CodePlex site 下载 ASP.NET MVC 2 RC 2 源代码. MVC Futures 项目中可能也有一个实现,但我不确定。

关于asp.net-mvc-2 - ASP.NET MVC 2 动态生成模型中的数据注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2256228/

相关文章:

asp.net-mvc-2 - Html.Action asp.net mvc

c# - 如果 Datetime value = null 则使用今天的日期

jquery - 从数据库收集信息并在asp.net mvc中使用jquery在同一 View 中显示它

c# - 我可以在没有模型绑定(bind)的情况下检查模型状态吗?

asp.net-mvc - knockout JS + 发送到 MVC 3

asp.net-mvc - 如果在 for 循环中,DropDownListFor 不会选择值

asp.net-mvc - 使用 ASP.NET MVC3 在自定义 Htmlhelper 中查找区域名称和 Controller 名称

c# - 无法动态调度 Html.ActionLink

asp.net-mvc-2 - 将 MVC2 部署到 IIS5 或 6

c# - 有没有办法通过数据注释来验证一个日期属性是否大于或等于另一个日期属性?