【发布时间】:2014-10-23 00:43:34
【问题描述】:
希望找到一种方法,当在 MVC5 中自定义属性或更优选正则表达式属性装饰模型中的属性时,html 控件将包含它作为控件的另一个属性。例如
class CoolModel {
[CustomHtmlAttribute("hello")]
public string CoolValue {get;set;}
}
输出...
<input type="text" customhtml="hello" />
或者类似的东西。所以对于 RegularExpressionAttribute,pattern 属性会很棒。
class CoolModel {
[RegularExpressionAttribute("/d")]
public string CoolValue {get;set;}
}
输出...
<input type="text" pattern="/d" />
我需要这个输出而不启用 Javascript unobtrusive 选项。所以我正在考虑以一种方式在模型中指定一些属性,这些属性会被下推到视图中。不确定数据注释提供者是否可以完成这项工作。不确定是否可以扩展 Helper 以获得此结果。
感谢您的帮助。
【问题讨论】:
-
要实现这一点,您只需使用标准助手并添加 html 属性
@Html.TextBoxFor(m => m.SomeProperty, new { customhtml = "hello" })。使用自定义数据注解会复杂得多 -
感谢两位的回答。 @StephenMuecke 我知道,但出于可维护性目的,我需要在模型中指定属性。
-
@artm 我之前检查了该链接,我想知道是否有其他方法可以做到这一点。您能否添加一个元属性,无需执行整个过程即可在视图中呈现?
-
在这种情况下,artm 的链接可能很有用,尽管它有点过时并且确实依赖于创建自定义
EditorTemplates,这可能难以跨项目维护。另一种选择是实现 IMetadataAware 以将属性添加到metadata.AdditionalValues,然后创建一组自定义 html 帮助器来合并属性
标签: c# asp.net-mvc html asp.net-mvc-4 asp.net-mvc-5