Я создаю новый сайт MVC3.
Проверка на стороне клиента включена в web.config
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
Сценарий # 1: вывод HTML, созданный после неудачной проверки (на стороне клиента):
<span data-valmsg-replace="true" data-valmsg-for="UserName" class="field-validation-error">
<span htmlfor="UserName" generated="true" class="">Please enter an email address</span>
</span>
Обратите внимание на вложенный тег span, где самый внутренний тег имеет класс = ""
Сценарий № 2: Пользовательская проверка на стороне сервера. С той же конфигурацией web.config я добавил проверку на сервере, чтобы проверить пользовательское бизнес-правило. Проверка не пройдена, я добавляю ошибку в ModelState.
Сгенерированный HTML выглядит следующим образом:
<span data-valmsg-replace="true" data-valmsg-for="UserName" class="field-validation-error">Please enter a valid email address</span>
Обратите внимание, что был создан только один тег span, а НЕ вложенный тег.
Из-за этого поведения мне больно иметь дело с моим CSS, поскольку я не могу просто стилизовать класс .field-validation-error, поскольку в моем сгенерированном HTML есть 2 разных конечных результата.
Вкратце: проверка на стороне клиента генерирует только 1 тег диапазона, проверка на стороне сервера генерирует 2 тега диапазона.
ВОПРОС: Это поведение платформы с отступами или я что-то не так делаю?