我想知道在此链接上被引用作为已接受答案的代码是否是线程安全的。我的意思是不适用于多线程。我只是不希望输出交叉用户页面请求 Add CSS or JavaScript files to layout head from views or partial views
我是否会遇到许多页面请求可能越过样式和脚本的情况。
如果您了解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;
}
感谢
答案 0 :(得分:5)
嗯....对我来说看起来不像; p
HtmlHelper
有一些实例属性,特别是ViewContext
和ViewData
(通过ViewDataContainer
)等等。把它放在static
的任何地方都是一个糟糕的主意。
随着正在进行的基本代码,你可能会侥幸逃脱它,但是:IMO这仍然是一个非常糟糕的主意。好好发现。