ASP.Net MVC Master Page架构建议和动态CSS / JavaScript参考?

时间:2011-06-22 18:27:14

标签: asp.net-mvc-3 architecture master-pages

我正在进入ASP.Net MVC领域,需要一些关于架构的想法/建议。在我当前的ASP.Net Web表单应用程序中,我使用嵌套的母版页方法。我有一个主站点主站,它公开了站点的所有常用功能和布局元素。然后,我有一组其他母版页,它们从Main master继承了这些部分的公开特定功能。这些嵌套母版页的示例包括:模式弹出窗口的母版页和大多数站点的桌面类型布局。

我的应用程序架构的一部分是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());

我在我的主母版页中公开了一个公共属性,它是一个List(UIReference指的是CSS或JavaScript引用类型)。这样,从我继承的master或实际的aspx页面,我可以添加到该集合任何其他JS或CSS引用。

我的问题是,还有其他人在ASP.Net MVC中做过类似的事情还是有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

我可能会通过一个BaseController类来实现这一点,所有控制器都是inheirt(继承常规Controller类)然后在那里你可以将你的CssReferences设置为ViewBag的属性。

(发表关于ViewBag用法:http://davidhayden.com/blog/dave/archive/2011/01/19/ViewBagAspNetMvc3.aspx

仅取决于您需要在何处设置参考文献。

在旁注中,带有Razor的MVC3允许以与ASP.NET Web窗体类似的方式嵌套布局。

_layout.cshtml有一个RenderBody()函数

MyInnerLayout.cshtml将其布局设置为_layout.cshtml,然后将其所有HTML呈现到_layout.cshtml具有RenderBody()函数的位置