【问题标题】:ASP.Net MVC Master Page architecture advice and dynamic CSS / JavaScript references?ASP.Net MVC 母版页架构建议和动态 CSS/JavaScript 参考?
【发布时间】:2011-06-22 18:27:14
【问题描述】:

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

我的应用程序架构的一部分是 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 引用类型)。这样,从我继承的主页面或实际 aspx 页面中,我可以将任何其他 JS 或 CSS 引用添加到该集合中。

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

【问题讨论】:

  • 这就是我在 MVC 2 中的做法。我不确定 MVC 3 是否有其他解决方案
  • 除了我所描述的,我没有发现任何其他东西。我会继续四处寻找并保持更新这篇文章。

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


【解决方案1】:

我可能会通过让所有控制器继承的 BaseController 类(继承常规 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 设置为 _layout.cshtml,然后将其所有 HTML 渲染到 _layout.cshtml 具有其 RenderBody() 函数的位置

【讨论】:

  • 布局是否像母版页一样工作,还是/您会应用布局来查看母版页?
  • 是的,布局的工作方式类似于母版页,内容的语法明显不同等。还要查找类似于母版页中 contentPlaceHolder 控件的部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多