2011-06-22 13 views
0

私はASP.Net MVC分野に移行しており、アーキテクチャに関するいくつかの考え方や助言が必要です。現在のASP.Net Webフォームアプリケーションでは、ネストされたマスターページアプローチを使用しています。私はサイトの共通の機能とレイアウト要素をすべて公開するメインサイトマスターを持っています。次に、メインマスターから継承した一連の他のマスターページに、これらのセクションの特定の機能を公開します。これらのネストされたマスターページの例は、モーダルポップアップウィンドウのマスターページと、ほとんどのサイトのデスクトップタイプのレイアウトです。ASP.Net MVCマスターページアーキテクチャアドバイスと動的CSS/JavaScriptリファレンス?

アプリケーションのアーキテクチャーの1つは、CSSとJavaScript/JQueryのレリーフをマスターまたは継承されたaspxページに動的に挿入できることです。私は参照を構築する世話をしたUIアセンブリを作成しました。ここでは、そのプロジェクトからいくつかのコードは次のとおりです。

/// <summary> 
/// This is the class model for a css reference 
/// </summary> 
public class CssReference 
{ 
    public string Href { get; set; } 
    public TypeEnum Type { get; set; } 

    public enum TypeEnum 
    { 
     TextCss 
    } 



} 

//This is the collection in the Main Master 
public List<CssReference> CssReferences 
    { 
     get;set; 

    } 

///this is how we would add to it from another inherited page or master 
Master.CssReferences.AddRange(DefaultCssReferences()); 

私はリストだった私のメインのマスターページ内のパブリックプロパティを公開(UIReferenceは、CSSやJavaScriptの参照型を枯れ参照します)。私の継承されたマスターまたは実際のaspxページから、このコレクションに他のJSまたはCSSリファレンスを追加することができます。

私の質問は、他の誰かがASP.Net MVCでこれに似た何かをしているか、それを行う良い方法がありますか?

+1

を有する場合にレンダリングさを有しています私はMVC 2でそれをやってきた。私はMVC 3のための別のソリューションがあるかどうかわからない –

+0

私が説明した以外の何かを見つけられなかった。私は徹底的に調べて、このポストを更新しておきます。 – DDiVita

答えて

1

これは、すべてのコントローラがinheirt(通常のコントローラクラスを継承している)というBaseControllerクラスを持つことで、おそらくこれで行きます。そこでは、CssReferencesをViewBagのプロパティに設定できます。

(ViewBagの使用法についてのお知らせ:http://davidhayden.com/blog/dave/archive/2011/01/19/ViewBagAspNetMvc3.aspx

ちょうどあなたが参照を設定する必要が場所によって異なります。サイドノートで

、カミソリでMVC3は、ASP.NET Webフォームと同様にレイアウトのネストを可能にします。

_layout.cshtmlはRenderBody()関数

MyInnerLayout.cshtmlは_layout.cshtmlために、そのレイアウトを設定し、そのすべてのHTMLは、次に_layout.cshtmlがこれはそのRenderBody()関数

+0

レイアウトはマスターページのように機能しますか、レイアウトを適用してマスターページを表示しますか? – DDiVita

+0

レイアウトはマスターページと似ていますが、コンテンツなどの文法は明らかに異なっています。また、マスターページのcontentPlaceHolderコントロールと同様のセクションも参照してください。 – dkarzon

関連する問題