ASP.net MVCとjQueryUIのジレンマ
-
03-07-2019 - |
質問
プロジェクトをASP.net MVC
フレームワークのベータリリースに移動しましたが、私が抱えている唯一の問題は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>
これらを使用すると、ビューの1つにあるaccordian UI
は完全に機能しますが、1つの問題を除きます。ThemeRoller
の画像がページに含まれていません。 jQuery参照をコメント化すると、ThemeRollerイメージがそこにあります。すべてのcssはContent folder
にあり、すべてのスクリプトはScripts folder
にあります。
これはばかげたパスの問題であることは知っていますが、それが私をひきつらせています。
不足しているものは何ですか?
更新
私は最初の回答を試みましたが、詳細はコメントを読んでください。ご覧の方、ありがとうございました。
2番目のアプローチも機能していません。困惑しています。
別の更新
スクリプトに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
矛盾の理由は 非常に簡単ですが、そうではないことを認めます わかりやすい!あなたが持っているとき <!> lt; link <!> gt; <!> lt; head内のタグ runat = <!> quot; server <!> quot; <!> gt;、ASP.NETは処理します <!> lt; link <!> gt; URLをタグ付けして検出し、 に関連してそれらを解決する アプリケーションのルート。あなたが持っているとき <!> lt; script <!> gt;ページ上のタグ(なし runat = <!> quot; server <!> quot;)ASP.NETは 単純なのでそのままにしておきます 古いHTML。
Url.Content()を使用するアプローチ それを解決するために使用します アプリのルートに関連して解決されます。 <!> lt; link <!> gt;のようにタグ。
他のヒント
すべてのビューが同じレベルにない限り、どちらかを使用する必要があります
- /Scripts/jquery-1.2.6.jsなどの絶対パスを使用します
- さらに良いことに、<!> lt;%= Url.Content(<!> quot;〜/ Scripts / jquery-1.2.6.js <!> quot;)%<!>などの仮想パスを解決しますgt;
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"));