我正在使用 MVC3,我想让我的视图与 jQueryUI 主题完全集成。这意味着对于标准@Html.EditorFor
字段,我希望他们的 css 类实现我选择的 jQueryUI 主题,如果我切换主题,我的标准 MVC3 输入会相应地改变,即使没有用 jQueryUI 增强功能进行装饰?
默认情况下,当我调用 时@Html.EditorFor(x => Model.FirstName)
,输出如下:
<input class="text-box single-line" data-val="true" data-val-length="The First Name field must be between 3 and 50 characters in length" data-val-length-max="50" data-val-length-min="3" data-val-required="The FirstName field is required." id="FirstName" name="FirstName" type="text" value="John" />
这很好而且很干净,因为我包含了所有的验证属性。但是,如果我尝试调用@Html.EditorFor(x => Model.FirstName, new { @class = "ui-widget ui-state-default ui-widget-content" })
以应用 jQueryUI 样式,则 CSS 类不会应用于输入字段(它们保持“文本框单行”)。
我确实发现,如果我更改@Html.EditorFor()
为@Html.ListBoxFor()
“new { @class = "..." }" 并将其包含在我选择的 css 类中,它会使用正确的 jQueryUI 类呈现,但我真的很喜欢 EditorFor 的灵活性,可以与任何输入类型。然而,即使只使用 TextBoxFor,我也不喜欢每次都包含 jQueryUI 类。
为了克服这个问题,我尝试创建一个共享的 EditorTemplate,它派生自System.String
并手动放入 css 类,这很有效,但后来我失去了验证属性的所有自动功能,它看起来很“做作”。似乎必须有一种更简单的方法来自动将自定义 CSS 全局应用于 EditorFor 助手。
所以我的问题是:
- 如何告诉 EditorFor 使用自定义 CSS 类?
- 如何覆盖 EditorFor(或至少 TextBoxFor)以全局应用 CSS 类,这样我就不必不断重复它们?
- 作为奖励,是否有任何关于 jQueryUI 类的用途的参考资料(例如,我应该何时应用ui-state-default与ui-widget-content),以便我所有的标准 MVC3 输入看起来像用装饰的输入jQueryUI 增强功能?