使用 MVC,当您使用 @Html.TextBoxFor(...) 之类的东西时,控件会使用模型中的属性属性进行渲染,以进行验证等操作。
它还使用类的属性名称作为呈现的 HTML 控件的名称。这与我们的命名约定有点冲突,所以我希望能够更多地控制 ID。
我已将“htmlAttributes:”添加到助手中,它可以满足我的要求,但我想知道:
- 这对 MVC 在发布信息时再次实例化模型的能力有何影响?
- 有没有办法使用模型类中的属性来指定控件 ID?
谢谢, 雅克
使用 MVC,当您使用 @Html.TextBoxFor(...) 之类的东西时,控件会使用模型中的属性属性进行渲染,以进行验证等操作。
它还使用类的属性名称作为呈现的 HTML 控件的名称。这与我们的命名约定有点冲突,所以我希望能够更多地控制 ID。
我已将“htmlAttributes:”添加到助手中,它可以满足我的要求,但我想知道:
谢谢, 雅克
这对 MVC 在发布信息时再次实例化模型的能力有何影响?
ID 属性对发布的任何内容绝对没有影响。提交表单时从不使用 ID 属性。唯一的要求是该属性在整个 DOM 中是唯一的。它是name
模型绑定器使用的属性。无论如何,您都不能使用 htmlAttributes 更改此属性,因为此属性是从用作第一个参数的 lambda 表达式中推断出来的,并且您无论如何都不需要更改它,否则您可能会破坏默认模型绑定器重新水化视图模型的方式。
有没有办法使用模型类中的属性来指定控件 ID?
是的,但它可能需要更多的工作。您可以将自定义编辑器模板用于标准类型和自定义元数据感知属性,该属性将将此附加元数据信息传递给自定义编辑器模板。如果您对实现细节感兴趣,我可以提供一个示例,但首先我必须了解您为什么需要它。