Tentando adicionar JS e CSS ao arquivo de layout no site MVC 3 Razor a partir de visualizações parciais

tualmente, estou usando um método parecido com o código a seguir para adicionar arquivos de script e css ao cabeçalho do arquivo de Layou

public static class HtmlHelperExtensions
{
    public static MyCompanyHtmlHelpers MyCompany(this HtmlHelper htmlHelper)
    {
        return MyCompanyHtmlHelpers.GetInstance(htmlHelper);
    }    
}

public class MyCompanyHtmlHelpers
{
    private static MyCompanyHtmlHelpers _instance;

    public static MyCompanyHtmlHelpers GetInstance(HtmlHelper htmlHelper)
    {
        if (_instance == null)
            _instance = new MyCompanyHtmlHelpers();

        _instance.SetHtmlHelper(htmlHelper);

        return _instance;
    }

    private HtmlHelper _htmlHelper;

    public ItemRegistrar Styles { get; private set; }
    public ItemRegistrar Scripts { get; private set; }

    public MyCompanyHtmlHelpers()
    {
        Styles = new ItemRegistrar(ItemRegistrarFromatters.StyleFormat);
        Scripts = new ItemRegistrar(ItemRegistrarFromatters.ScriptFormat);
    }

    private void SetHtmlHelper(HtmlHelper htmlHelper)
    {
        _htmlHelper = htmlHelper;
    }
}

public class ItemRegistrar
{
    private readonly string _format;
    private readonly List<string> _items;

    public ItemRegistrar(string format)
    {
        _format = format;
        _items = new List<string>();
    }

    public ItemRegistrar Add(string url)
    {
        if (!_items.Contains(url))
            _items.Insert(0, url);

        return this;
    }

    public IHtmlString Render()
    {
        var sb = new StringBuilder();

        foreach (var item in _items)
        {
            var fmt = string.Format(_format, item);
            sb.AppendLine(fmt);
        }

        return new HtmlString(sb.ToString());
    }
}

public class ItemRegistrarFromatters
{
    public const string StyleFormat = "<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />";
    public const string ScriptFormat = "<script src=\"{0}\" type=\"text/javascript\"></script>";
}

UsingHtml.MyCompany().Styles.Add("/Dashboard/Content/Dashboard.css"); para adicionar arquivos ... e@Html.MyCompany().Styles.Render() para renderizá-los em Layout_.cshtm

Meu problema é que este é um método estático, o que significa que persiste na lista de folhas de estilo e arquivos de scrip

Preciso fazer a mesma coisa que isso, mas sem mantê-lo persistent

Eu preciso que as listas sejam refeitas a cada solicitação, pois elas mudam de página para página, qual é a aparência dessa página específic

É possível limpar as listas em todas as solicitações antes de adicionar os scripts necessários ou talvez depois de serem renderizado

Atualizar O motivo para não usar uma seção, RenderPartial ou RenderaActions é impedir que a mesma folha de estilo ou arquivo de script seja adicionada mais de uma vez ao arquivo Layout.

O site em construção tem um Layout_.cshtml com o layout básico. Por sua vez, isso é usado por uma Visualização que percorre uma lista de itens e, para cada item, é chamada uma RenderAction que gera a exibição parcial específica para esse item. Às vezes, essas visualizações parciais precisam adicionar folhas de estilo e scripts.

Como pode ser necessário adicionar muitos scripts e folhas de estilo diferentes de diferentes visualizações parciais, uma lista global de estilos e scripts era a única maneira que eu pensava que isso poderia ser feito, para que haja um local global para verificar se um script já foi adicionado ao coleção ou não e, em seguida, renderize todos eles de uma só vez na ordem em que foram adicionado

Update 2: A verdadeira questão é como executar o mesmo tipo de função (uma lista global), mas sem usar um método de extensão estátic

questionAnswers(4)

yourAnswerToTheQuestion