这个html帮助程序线程安全吗?

Val*_*mas 8 c# thread-safety asp.net-mvc-3

我想知道在此链接上引用的代码是否是线程安全的.我的意思是不适用于多线程.我只是不希望输出交叉用户页面请求.
从视图或部分视图添加CSS或JavaScript文件到布局头

我是否会遇到对页面的许多请求可能跨越样式和脚本的情况.

如果你对MVC有所了解,那么在渲染视图并将结果呈现给布局(母版页)时调用add方法可能会有所帮助.

当前解决方案(如果需要改进,请告诉我)

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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*ell 5

嗯......看起来不像我; p

HtmlHelper有一些实例属性,特别是ViewContextViewData(通过ViewDataContainer)等把任何地方static是一个可怕可怕的想法.

随着正在进行的基本代码,你可能会侥幸逃脱它,但是:IMO这仍然是一个非常糟糕的主意.好眼力.

  • @Valamas,@ Marc对迟到的回复感到抱歉(我正在度假).几个星期前,我们意识到代码不是线程安全的.所以我已经改变了静态/单例实现,我们将实际的实例存储在当前的HttpContext中.与此同时,我开始研究一个处理资产的简单项目.你可以看看这里:https://github.com/speier/AssetBox它就像一个实验,它是我们在工作场所使用的当前解决方案的基础.让我知道你的想法. (3认同)