【发布时间】:2015-10-15 19:40:05
【问题描述】:
我想为我的编辑器创建一个自定义的 DataAnnotations-Attribute,作为在这样的模型中加载编辑器的一种干净且可重用的方式:
class MyModel {
[MyEditor(ShowPreview: true)]
public string Text{ get; set; }
}
我发现自定义属性可以通过继承属性来完成:
class MyEditorAttribute : Attribute { }
问题是:如何获取有关字段的信息,例如 id 或名称(在此示例中为 Text),以及当 html 应该在视图中呈现时如何返回我的自定义模板,例如
@Html.EditorFor(model => model.Text)
我发现有效的唯一方法是使用 UIHint-Attribute。
class MyModel {
[UIHint("MyEditor"), AllowHtml]
public string Text{ get; set; }
}
在此示例中,我可以添加一个名为 Views/Shared/EditorTemplates/MyEditor.cshtml 的视图,该视图会自动为该属性呈现。在那里我可以得到例如带有ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty)的字段ID
但我想创建一个自定义属性,因为它更简洁,我可以以一种简洁的方式为我的编辑器指定一些属性。如何使用 DataAnnotations 做到这一点?我找不到这方面的信息。我还搜索了 UIHint-Class 的源代码以了解它是如何工作的,但是尽管 .NET 框架是开源的,但我找不到这些类的源代码。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-5 data-annotations custom-attributes