2011-07-07 36 views
8

Me pregunto si el código al que se hace referencia como la respuesta aceptada en este enlace es seguro para subprocesos. Quiero decir que no para multithreading. Simplemente no quiero que la salida cruce las solicitudes de la página de usuario.
Add CSS or JavaScript files to layout head from views or partial views¿Es seguro este hilo html helper?

¿Tendría una situación en la que muchas solicitudes de una página podrían haber cruzado por estilos y scripts?

Puede ser útil si conoce MVC porque los métodos de adición se invocan a medida que se visualizan las vistas y el resultado se representa en el diseño (página maestra).

solución actual (Por favor, hágamelo saber si debe mejorarse)

public static MyCompanyHtmlHelpers GetInstance(HtmlHelper htmlHelper) 
{ 
    MyCompanyHtmlHelpers _instance; 
    if (htmlHelper.ViewData["SectionHelper"] == null) 
    { 
     _instance = new MyCompanyHtmlHelpers(); 
     htmlHelper.ViewData["SectionHelper"] = _instance; 
    } 
    else 
     _instance = htmlHelper.ViewData["SectionHelper"] as MyCompanyHtmlHelpers; 

    _instance.SetHtmlHelper(htmlHelper); 

    return _instance; 
} 

gracias

+0

@Konrad muchas muchas solicitudes utilizan el mismo 'AppDomain' –

+0

@MarcGravell Ok, entonces. –

+0

Original [respuesta] (http://stackoverflow.com/questions/5110028/add-css-or-js-files-to-layout-head-from-views-or-partial-views/5148224#5148224) ha sido actualizado –

Respuesta

5

Hmm .... no se parece a mí; p

HtmlHelper tiene algunas propiedades de instancia, en particular ViewContext y ViewData (a través de ViewDataContainer) etc. Poner en cualquier lugar static es una terrible idea terrible.

Con el código básico que está pasando, probablemente salirse con la suya, pero: IMO esta sigue siendo una muy mala idea. Bien descrito.

+0

maldita sea, realmente me gusta esta solución. ¿Se puede hacer que el hilo sea seguro? –

+0

@Valamas seguro; pero en lugar de usar un campo estático, usaría una variable de contexto ... –

+0

@Valams en particular, el ViewContext del ayudante tiene un HttpContext; de eso puedes guardar cualquier cosa. *** Ese *** es lo que usaría para el almacenamiento aquí. –