Intentando agregar JS y CSS al archivo de diseño en el sitio web MVC 3 Razor desde vistas parciales

Actualmente estoy usando un método que se parece al siguiente código para agregar secuencias de comandos y archivos CSS al encabezado del archivo de diseño.

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>";
}

UtilizandoHtml.MyCompany().Styles.Add("/Dashboard/Content/Dashboard.css"); para agregar archivos ... Y@Html.MyCompany().Styles.Render() para representarlos en Layout_.cshtml.

Mi problema es que este es un método estático, lo que significa que persiste en la lista de hojas de estilo y archivos de script.

ecesito hacer lo mismo que esto pero sin mantenerlo persistente.

Necesito que las listas se vuelvan a crear en cada solicitud, ya que cambian de una página a otra el aspecto de esa página específica.

Es posible borrar las listas en cada solicitud antes de agregar los scripts que se necesitan o tal vez después de que se hayan procesado?

Actualizar La razón para no usar una sección, RenderPartial o RenderaActions es evitar que la misma hoja de estilo o archivo de script se agregue más de una vez al archivo de diseño.

El sitio que estoy construyendo tiene un Layout_.cshtml con el diseño básico. Esto a su vez es utilizado por una Vista que recorre una lista de elementos y para cada elemento se llama RenderAction que genera la vista parcial específica para ese elemento. Estas vistas parciales a veces necesitan agregar hojas de estilo y scripts.

Como puede ser necesario agregar muchos scripts y hojas de estilo diferentes desde diferentes vistas parciales, una lista global de estilos y scripts fue la única forma en que pensé que esto podría hacerse, por lo que hay un lugar global para verificar si un script ya está agregado al colección o no y luego renderizarlos todos a la vez en el orden en que se agregaron.

Actualización 2: La verdadera pregunta es cómo hacer el mismo tipo de función (una lista global) pero sin usar un método de extensión estático.

Respuestas a la pregunta(4)

Su respuesta a la pregunta