Я пытаюсь передать данные через ViewDataDictionary
в шаблон-файла в качестве добавочного метода HtmlHelper<TModel>
Передача данных в EditorFor через ViewDataDictionary не работает
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);
}
бросает исключение:
уже был добавлен Элемент с тем же ключом.
Когда вы передаете его так: 'helper.EditorFor (выражение,« _MyTemplate », vdd);' вы в основном передаете модель вашему шаблону, вы пробовали '@model ViewDataDictionary' в начале вашего шаблона, а затем используйте' var myViewDataValue = Model; '? –
Это какой-то расширенный шаблон для объекта DateTime. Поэтому изменение модели в «ViewDataDictionary» кажется неправильным (даже если оно будет работать). Любая идея, почему она не существует при установке ее как 'helper.ViewData [" someValue "] = true;', но не передавая ее как параметр для 'helper.EditorFor (выражение," _MyTemplate ")'? – KingKerosin