Установите свойство ViewContext в каждом частичном представлении текущего ViewResult, чтобы отключить jquery ненавязчивую проверку HTML генерацию атрибута - PullRequest
1 голос
/ 10 февраля 2020

В проекте, над которым я работаю, мне нужно отключить jquery ненавязчивую проверку на некоторых страницах и включить его на других. В текущем состоянии проекта проверка включена везде и должна быть отключена на некоторых страницах. Я знаю, если мне придется отключить его, когда я нахожусь в контроллере.

Я уже условно импортирую файлы javascript плагина, так что нет ненужной загрузки. Тем не менее, мои пользовательские HtmlHelpers, которые используют HtmlHelpers по умолчанию, по-прежнему генерируют атрибуты HTML, которые используются исключительно для ненавязчивой проверки jquery. Если я использую Html.EnableClientValidation(false); или ViewContext.ClientValidationEnabled = false; в указанном c частичном представлении, атрибуты не генерируются для этого конкретного c частичного представления - именно то, что я хочу. Но, поскольку представления компилируются в обратном порядке, от самого вложенного до основного представления, это означает, что мне нужно было бы установить использование Html.EnableClientValidation или ViewContext.ClientValidationEnabled в почти в каждом представлении , что не вариант. . Исправление: мне нужно попытаться использовать Html.EnableClientValidation() в макете представления, которое называется последним (после представления и частичных). Если я размещу Html.EnableClientValidation() в виде, а не в макете, он будет установлен правильно. Мне нужно, чтобы это было сделано до того, как я доберусь до представления, чтобы избежать написания этого в каждом представлении.

Итак, мой вопрос: как мне получить эффект видения ViewContext.ClientValidationEnabled в каждом представлении? Могу ли я установить ViewContext.ClientValidationEnabled до создания представления, чтобы оно отображалось на каждой странице? Из того, что я исследовал, возможно, мне понадобится бритвенный двигатель? Нет ли более простого решения, возможно, через какой-нибудь ActionFilter или напрямую из контроллера?

1 Ответ

1 голос
/ 10 февраля 2020

Найдено: установка HtmlHelper.ClientValidationEnabled = false; в контроллере установит его во всех ViewContexts, которые будут контейнером в ViewResult или PartialViewResult.

Источник

...