Asp.net MVC模型属性元数据指定TextBox id

时间:2012-07-19 07:26:47

标签: asp.net-mvc

使用MVC,当您使用类似@ Html.TextBoxFor(...)的内容时,控件将使用模型中的属性属性进行渲染,例如验证。

它还使用类的属性名称作为呈现的HTML控件的名称。这与我们的命名约定有点冲突,所以我希望能够更多地控制ID。

我已经将'htmlAttributes:'添加到帮助器中,这可以实现我的目的,但我想知道:

  1. 这如何影响MVC再次实例化模型的能力 什么时候发布信息?
  2. 有没有办法使用模型类中的属性属性指定控件ID?
  3. 谢谢, 雅克

1 个答案:

答案 0 :(得分:2)

  

这会如何影响MVC在发布信息时再次实例化模型的能力?

ID属性对发布的任何内容绝对没有影响。提交表单时从不使用ID属性。唯一的要求是该属性在整个DOM中都是唯一的。它是模型绑定器使用的 name 属性。您无法使用htmlAttributes更改此属性,因为此属性是从用作第一个参数的lambda表达式推断出来的,您无论如何都不需要更改它,否则您可能会破坏默认模型绑定器为视图模型重新水化的方式。

  

有没有办法使用模型类中的属性属性指定控件ID?

是的,但可能会多一点工作。您可以使用标准类型的自定义编辑器模板和自定义元数据感知属性,该属性将此附加元数据信息传递给自定义编辑器模板。如果您对实现细节感兴趣,我可以提供一个示例,但首先我必须了解您为什么需要它。