ASP.Net MVC Советы по архитектуре мастер-страниц и динамические ссылки CSS / JavaScript? - PullRequest
0 голосов
/ 22 июня 2011

Я переезжаю в область ASP.Net MVC и мне нужны некоторые мысли / советы по архитектуре. В моем текущем приложении веб-форм ASP.Net я использую подход с вложенной главной страницей. У меня есть главный мастер сайта, который раскрывает все общие функциональные возможности и элементы макета сайта. Затем у меня есть набор других главных страниц, которые наследуют от Главного мастера специальные функции для этих разделов. Примерами этих вложенных главных страниц являются: главная страница для модальных всплывающих окон и макет типа рабочего стола для большей части сайта.

Часть моей архитектуры для приложения заключается в том, что ссылки на 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 Ответ

1 голос
/ 23 июня 2011

Я бы, вероятно, пошел бы к этому, имея класс BaseController, который объединяют все ваши контроллеры (наследуя обычный класс Controller), тогда вы можете установить свои CssReferences в свойство ViewBag.

(Пост про использование ViewBag: http://davidhayden.com/blog/dave/archive/2011/01/19/ViewBagAspNetMvc3.aspx)

Просто зависит от того, где вам нужно установить ссылки.

С другой стороны, , MVC3 с Razor позволяет вложить макеты аналогично веб-формам ASP.NET.

_layout.cshtml имеет функцию RenderBody ()

MyInnerLayout.cshtml устанавливает для своего Layout значение _layout.cshtml, после чего весь его HTML-код отображается в том месте, где _layout.cshtml имеет свою функцию RenderBody ()

...