2017-09-12 22 views
2

遠隔レイアウトCSHTML

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

ローカルで、私はそれが同じASP.NET MVCプロジェクトに常駐する必要があることを意味します。

私たちのプロジェクトでは、異なるチームによって異なる時間に配備された異なるソリューション間で1つのレイアウトページを共有できる必要があります。したがって、実行時に中央の場所からレイアウトページを割り当てる必要があります。 誰もが最新のレイアウトページを取得してプロジェクト+配備する必要はありません。

レイアウトプロパティ(論理的なようです)にリモートURLを割り当てることはできません。 誰もこれを試したことがありますか?

私が行う代替レイアウト拡張メソッドを作ることを考えていた

以下(例えばthis.SetRemoteLayout(「[URL]」):

  • 中央からレイアウトのページをフェッチするために、同期だけでなく、キャッシュされたHTTPリクエストWebアプリケーション
  • それは相対パスでアクセスできるように、例えば「〜/ビュー/温度/ _Layout.cshtml」
  • が内部的にダウンロードしたファイル
  • の相対パスでLayoutプロパティを割り当てるローカルレイアウトページをダウンロードします

誰でもこれを行ったことがありますか?私たちは、次のパターンに従うとしている

+0

私はあなたがしてコピーし、「本物」という '前build'イベントを作成し、プロジェクトに「偽」_layoutを追加することができると思いますあなたの希望する場所から偽のものを探しましょう。 – mxmissile

+0

また、 "mklink"コマンド "mklink -d projectfolder canonicalfolder"を使用してリンクされたフォルダを使用することもできます(またはファイル自体にリンクするだけでも可能です)。ただし、これはソース管理の管理に問題を引き起こす可能性があります。標準的なプロジェクトを除いてリンクされたコンテンツを無視することをお勧めします。 – theGleep

+0

要件は、実行時にする必要があることを定義しています。レイアウトの変更が発生した場合、すべてのプロジェクトを再構築する必要はありません。 –

答えて

0

:中央DLLは、(frameworkingチームによって管理される)HTMLヘルパー(通常のチームによって管理される)

  • ローカルレイアウトページでGACにインストールされている

    • を呼び出しますHTMLヘルパーは、全体のレイアウトをレンダリングする
    • 私たちは、レイアウトが中央DLL HTMLヘルパーのコードを変更する必要がある場合、HTMLヘルパー

    ==>内の一般的なセクションをレンダリング/定義しますI sの適応と展開。すべてのアプリケーションは、アプリケーションを再デプロイすることなく、更新されたレイアウトを自動的に使用します。

    これは、我々は、HTMLヘルパー内のセクションを定義する方法です。

    public static IHtmlString RenderSectionCustom(this HtmlHelper html) 
        { 
         WebViewPage page = html.ViewDataContainer as WebViewPage; 
         var section = page.RenderSection("CustomTop", false); 
         return section == null ? MvcHtmlString.Empty : MvcHtmlString.Create(section.ToHtmlString()); 
        } 
    
        public static IHtmlString DefineSectionCustom(this HtmlHelper html) 
        { 
         WebViewPage page = html.ViewDataContainer as WebViewPage; 
    
         page.DefineSection("CustomTop",() => 
         { 
          page.Write(MvcHtmlString.Create(" hello world (custom top section from HTML HELPER)!")); 
         }); 
    
         return MvcHtmlString.Empty; 
        } 
    
  • 関連する問題