ASP.NET MVC将HiddenInput属性添加到DLL中的Model

mar*_*ine 2 asp.net-mvc asp.net-mvc-3

我正在使用一个asp.net MVC 3应用程序,该应用程序使用来自已编译库的数据模型.但是,我希望能够将以下声明添加到已编译的dll中的某些数据模型属性:

[HiddenInput(DisplayValue = false)]
Run Code Online (Sandbox Code Playgroud)

问题是我没有DLL的源代码,作者不想在System.Web.Mvc上引入依赖.有没有办法,使用部分类或类似的东西,这将允许我添加这个属性?

标记

Dar*_*rov 5

不,没有办法.在编译时,属性在程序集的元数据中被烘焙,并且在运行时不能修改现有的类.就部分类而言,它们仅在同一个程序集中工作.

此外,如果这个程序集的作者不想在他们的库中引入依赖,System.Web.Mvc他们可能有理由这样做.显然,作为MVC开发人员,您应该使用视图模型,这些视图模型是专门针对视图需求量身定制的类,然后在域模型(来自不同库的内容,......)和视图模型之间进行映射.然后,您将这些视图模型传递给视图,而不是域模型.当然,您的视图模型将具有所有必需的元数据和格式,例如DisplayName,Hidden,...为了简化这两个类之间的映射,您可以使用AutoMapper.