2009-07-24 36 views
5

私はASP.NET MVCソリューションを作成しています。その中に2つのMVC Webプロジェクトがありました。ASP.NET MVCの別のプロジェクトでマスタービューを参照するにはどうすればよいですか?

「共有」という3つ目のプロジェクトを作成することに興味があります.2つのサイトの共有ビュー/コンテンツを参照できるため、編集する場所は1つだけです。

  • WebUI.Site1(ASP.NET MVCサイト)
  • WebUI.Site2(ASP.NET MVCサイト)
  • WebUI.Shared(新しく作成されたASP.NET MVCサイト)

Masterviewの場所が別のプロジェクトにある場合は、どのように参照できますか?

ので、通常はビューの上部に私はそうのようなMasterviewを参照します:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %> 

しかし、今

を、「Tabbed.Masterは」ローカルプロジェクトになっていないこと、それはソリューションの相違するプロジェクトにあります。私はプロジェクトへの参照を作成しましたが、WebUI.Site1からWebUI.SharedにTabbed.Masterを参照する方法がわかりません。以下のような

何か:

<%@ Page Title="" Language="C#" MasterPageFile="WebUI.Shared.Views.Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %> 

は動作しません。

masterviews、cssファイル、そのようなプロジェクトの画像などの場所の参照方法を教えてください。

答えて

0

WebUI.Sharedを指しWebUI.Site1WebUI.Site2の両方の下に仮想ディレクトリを作成してみてくださいマスターページがWebUI.Shared Root/Views/SharedPage.Master

に住んでいると仮定します。

WebUI.Site1/Shared => WebUI.Shared Root 
WebUI.Site2/Shared => WebUI.Shared Root 

WebUI.Site1WebUI.Site2内からマスターページにアクセスするには、次のパスを使用します。 ~/Shared/Views/SharedPage.Master

私はIDEが参照を追跡できるとは思わないが、 uldはサーバー上で動作します。

編集: WebUI.Site1とWebUI.Site2は、WebUI.Sharedで参照が必要な場合があります。

+0

これは動作しません。別の仮想パスにあるaspx/ascxまたはSiteMasterを指すだけで、それをコードベースの一部にすることはできません。 –

+0

@日産ファン - はい、できます。私はアサーションを検証するためのテストプロジェクトを立ち上げました。特定のマスタページがWebルートと同じWebプロジェクトにある場合、IISは気にしません。参照とパスがWebサイトのルートから見つかる限り、IISは満足しています。これは、あなたがサイトをセットアップするためにIISを使用していることを前提としています。このテクニックは、Visual StudioのASP.NET開発サーバーにはうまくいきません。 – Brandon

0

ビューを格納するプロジェクトの[ビュー]フォルダとは別の場所を使用する場合は、カスタムViewEngineを作成する必要があります。

prototypePhil Haackでご覧ください。それはデータベースにビューを格納することですが、どこから開始するかについてのアイデアを与えるはずです。

1

MasterViewsの性質上、ファイルベースのソリューションを見つける必要があります。仮想パスはそれを行うための1つの方法ですが、いつかは困っていると思います。内部Visual Studio Webサーバーを使用するときに、ファイル参照をどのように処理するのですか?

IISでこの仮想パスが見つからない場合に苦しむ痛みを考えてください。

Visual Studioでは、他のプロジェクトのファイルにリンクすることができます。 ...追加>既存のアイテム - - 、私は「ドン

個人的にリンクに追加> - >ファイルを選択し

右クリックし、[ソリューションエクスプローラで:これらのファイルは、コンパイル時にコピーされますこの機能を気にしないでください。しかし、それはあなたが必要とするものをするようです。

関連する問題