我刚刚将一个项目移动到ASP.net MVC
框架的beta版本,我遇到的唯一问题是jQuery
和jQueryUI
。
这是交易:
在Site.Master
中有以下脚本参考:
<script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui.js" type="text/javascript"></script>
使用这些,我在其中一个视图上的accordian UI
完美地工作,除了一个问题:来自ThemeRoller
的图像不包括在页面上。如果我注释掉jQuery引用,那么ThemeRoller图像就在那里。所有的css都在Content folder
中,所有的脚本都在Scripts folder
中。
我知道这是一个愚蠢的道路问题,但它让我抽搐。
我错过了什么?
更新
我尝试了第一个答案无济于事,请阅读评论以获取详细信息。再次感谢那些正在观看的人。
第二种方法也不起作用。我很困惑。
另一个更新
对脚本使用Url.Content
标记确实允许脚本正常运行。对样式表使用常规标记将所有样式都放到页面上,除了与ThemeRoller相关的所有样式外。
jquery-ui-themeroller.css
文件位于Content文件夹中,当我检查元素时,css存在。我怀疑问题在于从这个css文件映射到themeroller的images文件夹,该文件夹也在Content文件夹中。此文件中的图像链接指定为:background: url(images/foo.gif)
此文件中的链接是否需要更改?
这有帮助吗?
http://forums.asp.net/p/1334947/2690469.aspx
不稳定的原因很简单,但我承认要弄清楚并不容易!当您在<head runat =“server”>中有<link>标记时,ASP.NET将处理<link>标记并检测URL并相对于应用程序的根解析它们。当你在页面上有一个<script>标签(没有runat =“server”)时,ASP.NET就会不管它,因为它只是普通的旧HTML。
使用Url.Content()是我用来解决这个问题的方法,因为它会相对于app root解析,就像<link>标记一样。
除非您的所有观点都处于同一级别,否则您需要使用
Url.Content() http://jvance.com/media/2008/10/18/UrlContent5.media
您需要更改jquery-ui-themeroller.css中的链接以指向图像的当前位置。
在中,您需要更新css文件正在查找的图像的路径。
background: url(images/foo.gif)
从路径中删除“images /”,使其看起来像:
background: url(foo.gif)
因为你的CSS和图像都在内容文件夹中。
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterClientScriptInclude(this.GetType(),"JQuery", ResolveUrl("~/js/jquery.min.js"));
Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "JQueryUI", ResolveUrl("~/js/jquery-ui.custom.min.js"));