2

質問の名前が正しいかどうかはわかりませんが、問題は次のとおりです。

複数の仮想ディレクトリにデプロイされているMVC.NETアプリがあります。これは、QAのさまざまな段階でさまざまなバージョンがあるためです。

これに伴う問題は、あるサイトでは.js参照が

/ VirtualDir /scripts/file.js

そして別のサイトでは

/ OtherVirtualDir /scripts/file.js

この問題のもう1つの側面は、リンクを作成するHtmlHelpersがあることです。これに伴う問題は、HtmlHelperメソッドにUrlHelperがないことです。ビューからHtmlHelperにUrlHelperを渡しても「OK」ですか?これを取得してタグを生成できますか?

他の誰かがこの種の問題に対処しなければなりませんでしたか?助言がありますか?

ありがとう

デイブ

4

3 に答える 3

1

MVC のビューからファイルを参照するときは、常にこれを使用します

<script src="<%= Url.Content ("~/Scripts/jquery-1.3.2.js") %>" type="text/javascript"></script>

ビューの参照はそれらを要求するリソースに対して相対的であるため、マスター ページでこの Javascript を使用すると、.JS ファイル内で「相対」パスが必要な場合に役立ちます。

<script type="text/javascript">var imgRoot = '<% = Page.ResolveUrl("~/Images/") %>';</script>

そして最後に、CSS のすべてのパスは .css ファイルの場所に対して相対的であるため、CSS は問題なく機能します。

于 2010-02-10T16:28:19.233 に答える
1

わかりました、最終的に解決策はこれであることがわかりました:

<%= Html.JavaScriptTag("siteFunctions.js")%>
<%= Html.MyCSS("Site.css")%>
<%= Html.MyImage("loading_large.gif") %>

上記の最初の例の次の定義を使用して

public static string JavaScriptTag(this HtmlHelper htmlHelper, string fileName)
{
    TagBuilder js = new TagBuilder("script");
    string path = VirtualPathUtility.ToAbsolute("~/Scripts/" + fileName);
    js.MergeAttribute("src", path);
    js.MergeAttribute("type", "text/javascript");

    return js.ToString();
}

これらの HtmlHelpers は素晴らしいです!

于 2010-02-10T16:24:08.003 に答える
1

FileResultパスをカプセル化する静的コンテンツ (css、js など) のを返すコントローラーを作成することを検討してください。

于 2010-02-09T13:54:53.300 に答える