Требовать проверки только в том случае, если поле видимо
Я использую атрибут [Required]
для проверки на стороне клиента в ASP.NET MVC 3.
Класс выглядит так:
public class User
{
[Required(ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
}
Я хочу, чтобы поле FirstName
проверялось, только если оно видимое, которое будет отображаться только при определенных условиях. Как я могу это сделать?
Я использовал следующее, но все же он проверяет правильное поле этого скрытого поля.
$('#registerForm').validate({ ignore: ":not(:visible)" });
Ответы
Ответ 1
С некоторыми полезными подсказками от @Josiah я могу перейти к моему требованию.
Добавьте класс RequiredIfAttribute и необходимый javascript. См. Условная проверка в ASP.NET MVC 3
И в классе добавьте атрибут RequiredIf
как:
public class User
{
[RequiredIf("hFirstName", "true", ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
и в aspx:
@Html.TextBoxFor(model => Model.FirstName, new { @style = "height:auto;" })
@Html.ValidationMessageFor(model => Model.FirstName)
@Html.Hidden("hFirstName")
Задайте значение hFirstName
равным "true", если поле FirstName скрыто и "false", если оно видимо.
Магия работает с этими изменениями. Спасибо @Josiah Ruddell за ответ
Ответ 2
Я бы создал условно необходимый атрибут. Существует хорошая статья о создании с помощью проверки jQuery здесь.
Другой вариант: вы можете ссылаться на проект, например Foolproof validation (codeplex), который предоставляет эту функциональность и клиентские скрипты.
Кроме того, вы можете использовать ajax для загрузки частичных представлений, чтобы они никогда не были на странице при скрытии. Это позволит избежать условной проверки вообще.
Ответ 3
Попробуйте использовать собственный атрибут :
[ConditionalRequired("hFirstName==true")]
public string FirstName {get, set};
Он поддерживает несколько условий.