2013-06-24 152 views
0

我正在尋找一種方法來在HtmlHelpers之間共享數據。目標是設置一次配置,而不是在每次調用時都傳遞一個參數。在下面的例子中,我設置表單類型確定網格配置:在HtmlHelpers之間共享數據

@{ Html.SetFormType(HtmlHelpers.FormType.Boxed); } 
@Html.FormItemFor(m => m.LoginName) 
@Html.FormItemFor(m => m.Password) 
public static void SetFormType(this HtmlHelper helper, FormType formType) 
{ 
    helper.ViewBag.FormType = formType; 
    helper.ViewContext.ViewBag.FormType = formType; 
} 

設置ViewBag不會通過後續@Html通話持續。設置ViewContext.ViewBag仍然存在,但是安全嗎?

現有方法EnableUnobtrusiveJavaScript設置在ScopeCache類的實例中,該實例又被添加到HttpContext.Items。也許這也是存儲我的數據的候選人?

回答

2

您可以使用HttpContext.Current.Items的基於請求的範圍對象,因爲HttpContext.Current實際上是唯一且始終存在於請求中的唯一容器。 PS:不要把所有東西都直接放到物品上。不要把所有東西直接放在物品上。只需在那裏添加一個控制器項目並在此工作。