2013-06-24 117 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:不要把所有东西都直接放到物品上。不要把所有东西直接放在物品上。只需在那里添加一个控制器项目并在此工作。