2017-02-17 12 views
0

Как остановить значения в объекте ViewBag, связанного с элементами управления в MVC? Вид не сильно типизирован.ViewBag, используемый в привязке к модели

Я передаю данные, представляющие вид, используя ViewBag. Этот datatable передается как значение в пользовательский элемент управления, построенный с использованием методов расширения на HtmlHelper.

Вид имеет некоторую логику, которая полагается на EntityID, поэтому я передаю EntityID в представление с помощью ViewBag.

Управление строит, помимо прочего, скрытое поле с именем «EntityID» и вместо того, чтобы использовать значение, которое я передаю из своего набора данных в html-помощник, вместо этого привязывается к значению в ViewBag.

return htmlHelper.Hidden(name, value, attributes); 

Как я получаю HtmlHelper использовать мое значение вместо того, чтобы использовать то, что находится в ViewBag?

Это происходит, когда визуализируется представление.

Вызов контроллера View осуществляется с помощью запроса Ajax GET, а возвращаемый html-вид добавляется к div.

Запрос GET отправляет объект методу действия. Объект имеет свойство с именем EntityId

+0

Это то, как 'HtmHelper'methods работать - они сначала проверьте значение в «ModelState», если не найдено, затем «ViewData» и, наконец, свойство модели. –

+0

@StephenMuecke Я мог бы создать скрытую строку управления вводами, но я хотел знать, есть ли способ предотвратить использование HtmlHelper' ViewBag во время привязки модели. – Developer

+0

Можете ли вы дать немного больше контекста - это происходит, когда представление сначала отображается, или только если вы либо возвращаете представление после отправки, либо если у метода есть параметр, который соответствует имени. –

ответ

0

Вы не можете ограничить много о внутренней работы HTML-хелперов, но вы всегда можете сделать ваши собственные:

<input type="hidden" name="@Html.NameFor(m => m.EntityID)" value="@Model.EntityID" />