Вы говорите о добавлении его в макет из вида? Поскольку представление отображается перед макетом, это означает, что если вы создадите помощник, который позаботится о отображении блоков стилей, это решит вашу проблему.
Это означает, что в вашем представлении или в вашем представлении вы можете вызывать что-то вроде этого:
$Style.Add("/static/style1.css")
и в вашем макете (заголовок):
$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
person
jishi
schedule
31.05.2011