2011-07-07 59 views
8

我想知道如果代码作为接受的答案引用此链接是线程安全的。我的意思不是多线程。我只是不想输出跨越用户页面的请求。
Add CSS or JavaScript files to layout head from views or partial views这个html helper线程安全吗?

我有一种情况,对页面的许多请求可能会跨越样式和脚本。

如果您对MVC有所了解,可能会有所帮助,因为在渲染视图并将结果呈现给布局(母版页)时会调用添加方法。

当前解决方案(请让我知道这是否应该改进)

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

@Konrad很多许多请求都使用相同的'AppDomain' –

+0

@MarcGravell那好吧。 –

+0

Original [answer](http://stackoverflow.com/questions/5110028/add-css-or-js-files-to-layout-head-from-views-or-partial-views/5148224#5148224)已经更新 –

回答

5

嗯....看起来并不像它给我,P

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

随着基本代码的发展,你会可能摆脱它,但:国际海事组织这仍然是一个非常糟糕的主意。发现得好。

+0

darn,我真的很喜欢这个解决方案。它能使线程安全吗? –

+0

@Valamas肯定;但不是使用静态字段,我会使用上下文变量...... –

+0

@ Valams特别是,助手的ViewContext有一个HttpContext;从那里你可以存储任何东西。 ***这是我将用于存储在这里。 –