通过 ViewDataDictionary 将数据传递给 EditorFor 不起作用
本文关键字:EditorFor 不起作用 ViewDataDictionary 数据 通过 | 更新日期: 2023-09-27 18:34:51
我正在尝试通过ViewDataDictionary
将数据传递到扩展方法中的模板文件以进行HtmlHelper<TModel>
var vdd = new ViewDataDictionary(helper.ViewData);
vdd["someValue"] = true;
return helper.EditorFor(expression, "_MyTemplate", vdd);
在我的_MyTemplate.cshtml
中,我尝试访问它
@{
var myViewDataValue = ViewData["someValue"];
}
它总是null
因为我的"someValue"位于ViewData.Values
下,我无法通过它的名称访问它。
我在这里错过了什么?
直接在我的视图中使用它
ViewData["someValue"] = true;
@Html.EditorFor(m => m.Start, "_MyTemplate")
正在工作。扩展方法中的相同内容在_MyTemplate
中失败,ViewData
根本没有"someValue"。
public static MvcHtmlString MyExtension<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
helper.ViewData["someValue"] = true;
return helper.EditorFor(expression, "_MyTemplate", helper.ViewData);
}
引发异常:
已添加具有相同键的项目。
更改
public static MvcHtmlString MyExtension<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
helper.ViewData["someValue"] = true;
return helper.EditorFor(expression, "_MyTemplate");
}
自
public static MvcHtmlString MyExtension<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
helper.ViewContext.ViewData["someValue"] = true;
return helper.EditorFor(expression, "_MyTemplate");
}
我认为HtmlHelper.ViewData
和HtmlHelper.ViewContext.ViewData
如果不以某种方式被覆盖,也是相同的。
谁能解释这种行为?