Asp.net mvc 将JQueryUI主题应用于MVC渲染控件
在我的MVC3应用程序中,我有以下JavaScript,它接受所有Asp.net mvc 将JQueryUI主题应用于MVC渲染控件,asp.net-mvc,jquery-ui,Asp.net Mvc,Jquery Ui,在我的MVC3应用程序中,我有以下JavaScript,它接受所有textbox控件和使用.text box.single line类呈现的所有控件,并添加ui小部件内容的类,以使站点具有与我的主题一致的外观 $('.text-box.single-line, textarea').not('.input-validation-error').addClass('ui-widget-content'); 尽管这样做有效,但它似乎效率低下(在加载DOM后添加类),并且会导致页面“闪烁”(尤其是在
textbox
控件和使用.text box.single line
类呈现的所有控件,并添加ui小部件内容的类
,以使站点具有与我的主题一致的外观
$('.text-box.single-line, textarea').not('.input-validation-error').addClass('ui-widget-content');
尽管这样做有效,但它似乎效率低下(在加载DOM后添加类),并且会导致页面“闪烁”(尤其是在FireFox中)
我读过很多关于这个话题的文章,但似乎找不到一个简洁明了的解决方案。我知道下面是一些选项,但是没有一个看起来像MVC应该的那样干净
new{@class=“text box single-line ui widget content”}
htmlAttribute将所有EditorFor方法更改为TextBoxFor,但同样,这不是很干净,需要对使用EditorFor的控件进行数百次更改ui小部件内容
类,但这似乎有些过分ui小部件内容的现有方法。我认为这将是最干净的解决方案,但我读到不建议重写扩展方法。(来源:)
有没有其他选项可以让我轻松地将JQuery UI主题应用于现有MVC控件?我认为#2是最干净的选项…一个编辑器模板将适当地设置所有控件的样式。我认为这一点也不过分。谢谢Ethan,但我不需要为所有基本类型(字符串、Int、Decimal等)创建编辑器模板吗?如果您愿意使用
UIHint
注释,则不一定。例如,如果在视图模型中有一个字段Foo
,则可以使用[UIHint(“MyEditor”)]public int Foo{get;set;}
,只需确保调用编辑器模板MyEditor
。当然,对于要使用该编辑器的每个字段,您都必须使用该注释,因此它可能无法满足您的需要……另一个选项可能是创建自定义操作过滤器,以添加具有自定义行为的类。与此类似:。但我的建议是创建新的方法(即ThemeEditorFor),用添加的类调用预先存在的扩展方法。然后重构,将来可以通过HtmlHelper扩展生成主题元素或非主题元素。