Вы говорите о добавлении его в макет из вида?Поскольку представление отображается перед макетом, это означает, что если вы создадите помощника, который позаботится о рендеринге блоков стиля, это решит вашу проблему.
То есть, что в вашем представлении или вашем компоненте представления выбудет в состоянии вызвать что-то вроде этого:
$Style.Add("/static/style1.css")
и в вашем макете (head-section):
$Style.Render()
Вот пример помощника (наследование AbstractHelper необязательно):
public class StyleHelper : AbstractHelper
{
private readonly HashedSet<string> sheets = new HashedSet<string>();
public void Add( string styleSheet )
{
Add( styleSheet, "all" );
}
public void Add( string styleSheet, string media )
{
this.sheets.Add( String.Format( "media=\"{0}\" href=\"{1}\"", media, styleSheet ) );
}
public string Render()
{
var str = new StringBuilder();
this.sheets.ToList().ForEach( sheet => str.AppendLine( String.Format( "<link rel=\"stylesheet\" {0} />", sheet ) ) );
return str.ToString();
}
}
AbstractHelper является частью Castle.Monorail.Framework.Helpers.Вам не нужно наследовать это, если вы не хотите использовать функциональность, предоставляемую этой абстрактной реализацией.Затем добавьте его в свой контроллер, либо в базовый контроллер, либо в специальный контроллер:
[Helper( typeof( StyleHelper ), "Style" )]
public class YourController