使用数据注释时如何使用自定义编辑器模板?

詹姆斯·索普

我有一个简单的模型:

public class MyViewModel {
    public MyCustomType EmailAddress {get; set; }
}

在某些视图中,我需要显示一个输入框以允许编辑此属性。理想情况下,我想继续使用标准@Html.EditorFor语法,因此我创建了一个/Views/Shared/EditorTemplates/MyCustomType.cshtml模板:

@model MyNamespace.MyCustomType
@Html.TextBoxFor(m => m.SomeStringProperty, new { @class = "form-control" })

我也有一个自定义IModelBinder,可以MyCustomType在提交时读回该输入,一切正常。

但是,从属性名称可以看到,该属性包含一个电子邮件地址。我想使用标准数据注释属性将其标记为此类,然后在必要时进行更新MyCustomType.cshtml以利用它来呈现<input type="email">输入框-并非所有使用MyCustomType都是电子邮件地址,因此希望使用标准属性进行标记就这样。当我这样做时:

public class MyViewModel {
    [EmailAddress]
    public MyCustomType EmailAddress {get; set; }
}

我的自定义模板不再使用-它,而不是恢复到使用标准的EditorFor代码,本质上只是显示.ToString()的版本MyCustomType内的<input>其中翻出一个特定的属性,而不是我的自定义编辑模板。

有没有办法让它使用我的自定义编辑器模板功能,而仍然只需要模型添加标准数据注释属性?

克里斯·普拉特

在涉及编辑器模板时,数据批注始终优先于类型。您有几种选择:

  1. 创建一个自定义的“ EmailAddress”属性。从技术上讲,我认为您几乎可以仅继承子类,EmailAddressAttribute而无需实际添加任何其他内容。不过,自定义属性的名称将允许您为此使用其他编辑器模板。

  2. 继续并使用EmailAddress.cshtml编辑器模板,但在其中分支。假设MyCustomType继承自String

    @model String
    @if (Model is MyCustomType)
    {
        ...
    }
    else
    {
        ...
    }
    
  3. 不过,最简单的方法可能就是简单地指定模板。它不是完全自动的,但是不需要任何额外的工作:

     @Html.EditorFor(m => m.EmailAddress, "MyCustomType")
    

    然后将加载MyCustomType.cshtml而不是默认值EmailAddress.cshtml

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确使用自定义控件的“数据源选择器编辑器”?

来自分类Dev

使用iD编辑器自定义地图

来自分类Dev

使用dynamicjs的自定义编辑器

来自分类Dev

Shopify:如何使自定义模板在主题编辑器中可编辑?

来自分类Dev

如何在Microsoft VBA编辑器中使用自定义颜色?

来自分类Dev

如何将Markdown编辑器添加到自定义django注释?

来自分类Dev

如何将Markdown编辑器添加到自定义django注释?

来自分类Dev

如何使用 google API 在内部/自定义编辑器中打开和编辑共享的 google 文档?

来自分类Dev

在编辑器中自定义数据提示

来自分类Dev

Kendo Grid使用内联编辑和自定义编辑器下拉控件

来自分类Dev

使用自定义模型在QTreeView中编辑第二列不显示编辑器

来自分类Dev

古腾堡和经典编辑器 - 如何在经典编辑器中使用自定义古腾堡块?

来自分类Dev

反应数据网格自定义格式化程序是否同时与自定义编辑器一起使用?

来自分类Dev

如何在自定义组件视图中添加joomla编辑器,但不使用XML表单字段?

来自分类Dev

如何在不使用HTML5,Silverlight或内置表单编辑器的CRM中创建自定义表单

来自分类Dev

如何使用IE9在自定义文本编辑器中查看HTML源代码?

来自分类Dev

如何在自定义组件视图中添加joomla编辑器,但不使用XML表单字段?

来自分类Dev

自定义JComboBox编辑器

来自分类Dev

自定义宽度编辑器?

来自分类Dev

使用自定义 GridViewItem 模板时如何使用 ItemContainerTransitions?

来自分类Dev

在Spritekit场景编辑器中使用自定义SKNode

来自分类Dev

使用自定义编辑器绑定网格子模型

来自分类Dev

在一页中使用自定义按钮实现多个TinyMCE编辑器

来自分类Dev

使用自定义标记创建编辑器的可能性

来自分类Dev

使用SharedPreferences自定义ArrayList-适配器或编辑器错误?

来自分类Dev

使用 C# 插件在 Word 2010 中制作自定义书签编辑器

来自分类Dev

未使用 Umbraco 7 自定义属性编辑器 valueType

来自分类Dev

在 PropertyGrid 中为我无法修改的类型使用自定义编辑器

来自分类Dev

使用 Javafx 中的 ui 组件为图形编辑器创建自定义形状

Related 相关文章

  1. 1

    如何正确使用自定义控件的“数据源选择器编辑器”?

  2. 2

    使用iD编辑器自定义地图

  3. 3

    使用dynamicjs的自定义编辑器

  4. 4

    Shopify:如何使自定义模板在主题编辑器中可编辑?

  5. 5

    如何在Microsoft VBA编辑器中使用自定义颜色?

  6. 6

    如何将Markdown编辑器添加到自定义django注释?

  7. 7

    如何将Markdown编辑器添加到自定义django注释?

  8. 8

    如何使用 google API 在内部/自定义编辑器中打开和编辑共享的 google 文档?

  9. 9

    在编辑器中自定义数据提示

  10. 10

    Kendo Grid使用内联编辑和自定义编辑器下拉控件

  11. 11

    使用自定义模型在QTreeView中编辑第二列不显示编辑器

  12. 12

    古腾堡和经典编辑器 - 如何在经典编辑器中使用自定义古腾堡块?

  13. 13

    反应数据网格自定义格式化程序是否同时与自定义编辑器一起使用?

  14. 14

    如何在自定义组件视图中添加joomla编辑器,但不使用XML表单字段?

  15. 15

    如何在不使用HTML5,Silverlight或内置表单编辑器的CRM中创建自定义表单

  16. 16

    如何使用IE9在自定义文本编辑器中查看HTML源代码?

  17. 17

    如何在自定义组件视图中添加joomla编辑器,但不使用XML表单字段?

  18. 18

    自定义JComboBox编辑器

  19. 19

    自定义宽度编辑器?

  20. 20

    使用自定义 GridViewItem 模板时如何使用 ItemContainerTransitions?

  21. 21

    在Spritekit场景编辑器中使用自定义SKNode

  22. 22

    使用自定义编辑器绑定网格子模型

  23. 23

    在一页中使用自定义按钮实现多个TinyMCE编辑器

  24. 24

    使用自定义标记创建编辑器的可能性

  25. 25

    使用SharedPreferences自定义ArrayList-适配器或编辑器错误?

  26. 26

    使用 C# 插件在 Word 2010 中制作自定义书签编辑器

  27. 27

    未使用 Umbraco 7 自定义属性编辑器 valueType

  28. 28

    在 PropertyGrid 中为我无法修改的类型使用自定义编辑器

  29. 29

    使用 Javafx 中的 ui 组件为图形编辑器创建自定义形状

热门标签

归档