Проверки все еще запускаются в ASP.NET, даже если элементы управления скрыты? - PullRequest
5 голосов
/ 03 июня 2010

У меня есть форма, которая использует проверки ASP.NET. Я использую некоторые встроенные C # в aspx, чтобы показать / скрыть определенные элементы управления в зависимости от роли пользователя. Я бы использовал свойство Visible, но их так много, что я просто решил использовать встроенный C #, чтобы показывать и скрывать (я знаю, не лучшая практика, но потерпите меня на секунду). У меня проблема с тем, что Page.IsValid всегда имеет значение False, когда я отправляю свою форму (когда некоторые поля скрыты). Будут ли проверки по-прежнему срабатывать, даже если элементы управления даже не отображаются на странице? Кроме того, если это не так, есть ли эффективный способ разбить Page.IsValid, чтобы выяснить, что устанавливает его в False? Спасибо.

Ответы [ 4 ]

11 голосов
/ 03 июня 2010

Если вы установите Visible в false, проверка для этого элемента управления будет не срабатывать. С Проверка ASP.Net по глубине :

Почему бы просто не использовать Visible = false, чтобы иметь невидимый валидатор? В ASP.NET Видимое свойство элемента управления имеет очень сильный смысл: контроль с Visible = false не будет обрабатываться в все для предварительного рендеринга или рендеринга. Как результат этого более сильного значения, Visible = false для средства проверки что не только не отображается ничего, это не работает или. Не оценивается, не влияет на действительность страницы, и не ставит ошибки в резюме.

Если вы хотите, чтобы элемент управления подтвердил, но скрыл его на странице, используйте CSS, чтобы установить отображение на none.

1 голос
/ 12 октября 2016

Проверка элемента управления не запускается, если то, что он пытается проверить, невидимо. visible = "false"

Однако он все еще будет проверять его, вместо этого вы будете использовать hidden = "true" для этого элемента управления, чтобы он не отображался для пользователя, а хотел, чтобы он его подтвердил.

1 голос
/ 03 июня 2010

Валидаторы все равно будут срабатывать, их тоже нужно скрыть

0 голосов
/ 17 июня 2016

Да, валидаторы сработают, если они будут скрыты на стороне клиента.

Если валидатор и его элемент управления скрыты на стороне клиента с помощью атрибута CSS display = "none" или visibility = "hidden", то валидатор все равно будет запускаться как на стороне клиента, так и на стороне сервера.

Если вы хотите, чтобы валидаторы не оценивали / не запускали на стороне клиента и на стороне сервера, вы должны установить одно из этих свойств для валидаторов в выделенном коде: Visible="false" или Enabled="false"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...