ここでは、私があなたに与えることができるヒントをいくつか紹介します。まずハードコーディングを行い、ルートを利用していないため、コントローラのアクションを解決するためには、ResolveUrl
を使用しないでください。明日あなたがglobal.asaxであなたのルート定義を変更することにしたら?あなたはCSSファイル内の画像パスを定義する必要があるときに今、あなたは彼らがの場所への相対的な可能性があることを知っている必要があり
<%= Url.Content("~/scripts/foo.js") %>
:
<%= Url.Action("Action", "Controller") %>
と静的リソースのための:あなたは、このようなURLヘルパーを使用する必要がありますCSSファイル。だから、例えば、あなたがこのようなあなたのCSS含まれている場合:foo.css
内部
<link href="<%= Url.Content("~/styles/foo.css") %>" rel="stylesheet" type="text/css" />
を、あなたは相対的なイメージのパスを使用することができます。
.foo {
/** you can safely define relative image paths in relation with the CSS **/
background-image: url(../images/foo.png);
}
と最後の部分では、JavaScriptファイルです。それらの中には、ヘルパーを使ってURLを定義することはできません。異なる技術が存在します。個人的には、私は必要なURLがすでにHTMLに入っていることを意味する漸進的な拡張を伴う控えめなjavascriptが好きです。たとえば、リンクやフォームをAJAX化してみてください。あなたのビュー内には、必要があります:
<%= Html.ActionLink("foo bar", "foo") %>
と我々はそれをAJAXifyことができ、別のjavascriptの内側:
$('a').click(function() {
$('result').load(this.href);
return false;
});
あなたがDOMにURLを持たないどこかのケースがありますが。
<script type="text/javascript">
var myurl = '<%= Url.Action("foo") %>';
</script>
をして、外部のJavaScript内でこのmyurl
グローバル変数を使用します。だから、ビュー内のグローバル変数を使用することができます。
グローバル変数を持つ.. .AH !!!それは人を吸っているだけです。いろいろな場面を持つさまざまな方法について言及していれば、私はおそらく否定投票になります。 – Baz1nga
私はここで示唆しているように、グローバルjavascript変数をやり終えました、私はそれらを私のsite.masterヘッドエリアに入れました。 Url.Content()と他のアドバイスに関するヒントをお寄せいただきありがとうございます。 – Sgraffite