【问题标题】:Asp.net MVC model property meta data to specify TextBox idAsp.net MVC模型属性元数据指定TextBox id
【发布时间】:2012-07-19 07:26:47
【问题描述】:

使用 MVC,当您使用 @Html.TextBoxFor(...) 之类的内容时,控件会使用模型中的属性属性进行渲染,以进行验证等操作。

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

我已将“htmlAttributes:”添加到助手中,它可以满足我的要求,但我想知道:

  1. 这对 MVC 再次实例化模型的能力有何影响 信息何时发布?
  2. 有没有办法在模型类中使用属​​性属性来指定控件ID?

谢谢, 雅克

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢 Darin,主要问题是我们对服务器端控件/属性/等与客户端 JavaScript 有非常具体的命名约定。例如,如果它是服务器端的属性或对象,则将其命名为 MyObject,而客户端则将其命名为 myObject。这显然不是做一堆额外工作的足够大的理由,只是想知道是否有一种简单的方法可以做到这一点。
    • 实际上,在这种情况下,使用 htmlAttributes 可以满足我的目的,因为它不会影响模型绑定器!
    • 是的,您可以为 id 属性使用任何您想要的约定。它根本不会影响模型绑定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    相关资源
    最近更新 更多