在HtmlHelpers之间共享数据

时间:2013-06-24 12:23:40

标签: asp.net-mvc-4

我正在寻找一种在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仍然存在,但这样做是否安全?

现有方法EnableUnobtrusiveJavaScriptScopeCache类的实例中设置,而HttpContext.Items类又添加到{{1}}。也许这也是存储我数据的候选人?

1 个答案:

答案 0 :(得分:2)

您可以使用HttpContext.Current.Items的基于请求的范围对象,因为HttpContext.Current实际上是唯一的唯一且始终存在于请求中的容器。

干杯

PS:不要将所有东西直接放入物品中。只需在那里添加一个控制器项目即可。