我正在寻找一种在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
类又添加到{{1}}。也许这也是存储我数据的候选人?
答案 0 :(得分:2)
您可以使用HttpContext.Current.Items
的基于请求的范围对象,因为HttpContext.Current
实际上是唯一的唯一且始终存在于请求中的容器。
干杯
PS:不要将所有东西直接放入物品中。只需在那里添加一个控制器项目即可。