【问题标题】:Data annotations for input fields with out html helper methods没有 html 辅助方法的输入字段的数据注释
【发布时间】:2014-10-24 04:14:15
【问题描述】:

我想为输入字段绑定数据注释,但我对使用 html 帮助器来呈现我的表单不感兴趣。任何人都可以建议如何在不使用 html 辅助方法的情况下将数据注释绑定到纯 html 输入字段。

@Html.TextboxFor(model => model.UserName)

它自动将验证规则绑定到这个文本框,正如我们在模型类中所要求的那样 同样,如果我像这样写,我想要同样的东西

<input type="text" name="UserName"/>

in 也必须通过数据注解进行验证。

【问题讨论】:

  • 您的意思是使用 jquery.validate.unobtrusive 进行客户端验证?
  • @StephenMuecke nope 我写了@服务器端模型的数据注释,我想通过编写普通输入来使用相同的注释,而无需编写 Html 辅助方法。同样,我想知道如何在 html 辅助方法中编写占位符。
  • 服务器端验证与 html 助手渲染的 data-xxx 属性无关。它们仅被渲染以供使用 jquery.validate 的客户端验证使用。因此,如果您不使用客户端验证,则不需要它们

标签: html asp.net-mvc asp.net-mvc-4 c#-4.0


【解决方案1】:

装饰模型/视图模型的 html 属性通过模型ModelMetaData 对象引用。通过编写纯 HTML,您将无法像编写纯 HTML 那样访问该数据。

没有太多的方法可以解决这个问题,但如果迫在眉睫,那么您的选择是:

编写一些将ModelMetaData转换为JSON对象的方法,然后将必要的属性添加到关联的html输入字段中,使用名称作为对属性的引用,例如name="Model.UserName"

出于兴趣,您为什么决定不使用 HTML 帮助程序?您愿意编写自己的 HTML 助手吗?

【讨论】:

  • 感谢您的回复,我有一种情况,例如我需要以不同的语言显示占位符文本,我可以从资源文件中访问值,但如果我编写 html,则无法将其分配给文本框助手,但我可以通过使用纯 html 元素来分配相同的内容,如果我编写纯 html,我的注释会丢失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2013-06-23
相关资源
最近更新 更多