2010-12-14 8 views
1
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 

上記のコードは、Site.Masterテンプレートで宣言された外部CSS包含タグを示しています。なぜAsp.net MVCチームはSite.Masterページの "〜/ Content/Site.css"ではなく "../../Content/Site.css"を選択しましたか?

私の質問:なぜAsp.net MVCチームは "〜/ Content/Site.css"を使用するのではなく、その方法を選択しましたか?

ベストプラクティスですか?申し訳ありませんが、私は初心者で、まだ自分のスキルを向上させることを学んでいます。

EDIT 1:最初に "〜/"をURL解決メソッドに渡す必要があることを明確にしたいと思います。したがって、私は次のように質問を書き直すことができます:

チームはなぜurl resolverによって解決された "〜/"ではなく "../ .."を選択しましたか?

答えて

0

次のようにこの問題は、MVC 3で修正されました:私はMVCとWebフォームの両方がHTML出力をレンダリングするためにIISの助けを必要とするので、MVCチームは

<head> 
    <title>@ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 
</head> 
+0

@Andrew Barber:これを見て、MVC 3はそれを修正しました。 :-) – xport

1

〜はasp.netのもので純粋なhtmlでは意味がありません。タグをサーバーコントロールに変換することで処理されるWebフォームでは、〜を絶対パスに変換できますが、MVCでは自分でメソッドを呼び出す必要があります。いくつかの方法は例えばServer.MapPathです

+0

:-)この質問を読んでいると思い、それをMVCでも〜/を使用しても問題ありません。または、チームが〜/〜を選ぶのではなく、../..を選ぶという別の考え方があります。 – xport

+0

私が言ったように...もしあなたがHTMLに書くと、それはブラウザに送られるだけですが、ブラウザは何をしているのか分かりません。 –

+0

しかし、我々は、URLを解決するためにサーバー側のHTMLヘルパーを使用することができます。つまり、「../../」を使用すると、サーバーの「エネルギー」を節約できますか? – xport

2

@PauliØsterøが言ったことを参照してください。しかし、ベストプラクティスを依頼して以来、ここではそれらのハードコーディングされた文字列を取り除いています。それらのパスにはT4MVCを使用してください。

+0

T4MVCはカミソリビューエンジンで動作しますか? – xport

+1

T4MVCはコードジェネレータなので、どのエンジンを使用しているかは関係ありません。文字列のクラスを維持するのと同じように、実際のモデル、ビュー、ルートなどは実際のファイル構造に似ています。 –

1

または "/Content/Site.css"を使用してください。 "/"はhtmlのサイトルートを示しています。

+0

ポータブルソリューションを使用する/できません。将来、アプリケーションを子アプリケーションに移行する必要があることはわかりません。 – xport

+0

良い点!それを見ていない。 –

関連する問題