2011-07-07 86 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;從那裏你可以存儲任何東西。 ***這是我將用於存儲在這裏。 –