2009-04-07 4 views
1

仮想ディレクトリからMVCアプリケーションを実行しているときに、マスターページのデザインタイムを正しく設定するには、どのような方法が適していますか?例えば仮想ディレクトリで実行する場合のMVCマスターページ設計時間のサポート

、マスターページで、次の画像タグを与えられた:

<img src="../../Content/Images/myimage.jpg" alt="image" /> 

これは、マスターページとマスターページを使用するすべてのビューでフルデザイン時サポートを提供しますが、からアプリを実行するときにしますhttp://localhost/MyApp/、もちろん画像は見つかりません(ブラウザはhttp://localhost/Content/Images/Banner.pngを探しています)。実行時の表示を修正します

<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" /> 

が、マスターページとビューで休憩デザイン時サポート:

に画像を変更します。

第三の選択肢は、次のように=サーバーにrunatする画像タグを変更することです:

<img runat="server" src="../../Content/Images/myimage.jpg" alt="image" /> 

これは、ランタイムとデザイン時の両方で動作しますが、にrunat =「server」を指定するために持つことのようなもののように思えますハックのように。

これを処理するより良い方法はありますか?

編集:オプションcagdasはなく、実行時に、デザイン時に動作します提案している。

<img src="/Content/Images/myimage.jpg" alt="image" /> 

答えて

1

if_hackでデザインタイムサポートが必要な場合は、2つの方法を組み合わせることができます。このメソッドは、runat = "server"メソッドよりも多くのハックですが、いくつかのケースでは便利です。私はこのメソッドをcssクラスintellisenseとjQuery vsdocファイルに使用します。

<% // design-time use only %> 
<% if (false) { %> 
<img src="../../Content/Images/myimage.jpg" alt="image" /> 
<% } %> 
<% // run-time %> 
<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" /> 
0

コンテンツフォルダは、アプリケーションのルートにある(そしてそれはだので、私は、それがあると仮定した場合デフォルト)。

<img src="/Content/Images/myimage.jpg" alt="image" /> 

これは、アプリケーションのルート上のコンテンツフォルダを検索します。

0

私はあなたの第二の例を使用することを好む:あなたが言ったように、それは文句を言わないあなたがサポートをデザイン与える..but

<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" /> 

を。私は、MVC環境ではVSデザイナーを使用すべきだと主張したいと思います。私は単純にVSから実行しているdevサーバーを保ち、私のページをVSの隣にある私のfavブラウザで開くようにします。これはデザインビューよりも優れています。実際のブラウザです。

さらに、Url.Contentメソッドを使用してデザイナーに表示される画像を作成するという良いアイデアを犠牲にする必要はありません。どこでもUrl.Contentを使用して一貫したアプローチを維持すれば、長期的にはより多くの恩恵を享受できます。

関連する問題