【发布时间】:2012-01-04 17:01:03
【问题描述】:
我正在使用 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() 并在我选择的 css 类中包含“new { @class= “...”}”,它会使用正确的 jQueryUI 类呈现,但我真的就像 EditorFor 与任何类型的输入一起使用的灵活性。然而,即使只使用 TextBoxFor,我也不喜欢每次都包含 jQueryUI 类。
为了克服这个问题,我尝试创建一个从 System.String 派生的共享 EditorTemplate 并手动放入 css 类,这很有效,但随后我失去了验证属性的所有自动功能,这似乎“做作”。似乎必须有一种更简单的方法来自动将自定义 CSS 全局应用于 EditorFor 助手。
所以我的问题是:
- 如何告诉 EditorFor 使用自定义 CSS 类?
- 如何覆盖 EditorFor(或至少是 TextBoxFor)以全局应用 CSS 类,这样我就不必重复它们了?
- 作为奖励,是否有任何关于 jQueryUI 类的用途的参考资料(例如,我应该何时应用 ui-state-default 与 ui-widget-content ) 让我所有的标准 MVC3 输入看起来都像带有 jQueryUI 增强功能的输入?
【问题讨论】:
标签: asp.net-mvc-3 jquery-ui mvc-editor-templates