2012-07-26 2 views
5

В моем приложении ASP.NET MVC 4 я пытаюсь использовать ненавязчивую проверку клиента с помощью Fluent Validation.ASP.NET MVC Ненавязчивая проверка клиента не работает

<script src="/Scripts/jquery.validate.min.js" type="text/javascript"> 
</script> 
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"> 
</script> 

У меня есть эти два файла .js, которые VS2010 предоставляет при создании нового приложения ASP.NET MVC 4. Я также включил проверку на стороне клиента в файле web.config.

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 

Насколько я знаю, когда проверка клиента и ненавязчивый JavaScript включен, поля ввода с правилом клиент-проверки содержат данные-валин = «истинный» атрибут, чтобы вызвать ненавязчивую проверку клиента. И у меня есть это поле в моих полях ввода.

Например,

<input class="input-validation-error" data-val="true" data-val- 
required="error text here" id="purchasePrice" 
name="PurchasePrice" type="text" value=""> 

<span class="field-validation-error error" data-valmsg-for="PurchasePrice" 
data-valmsg-replace="true">'Purchase Price' must not be empty.</span> 

Однако, когда я представляю свою форму, она размещена на контроллер и моя модель проверяется на мой контроллер кода вместо стороне клиента.

EDIT:

Это мое открытие формы тега.

@using (Html.BeginForm("Create", "Product", FormMethod.Post, 
    new { enctype = "multipart/form-data", @class = "mainForm", 
     @id = "productCreateForm" })) 

Любые идеи? Благодарю.

+2

Глупый вопрос, но вы убедились, что главный файл JQuery js и два, которые вы показали там, были правильно решены? –

+0

Основной файл jQuery определенно разрешен, у меня есть функция jquery, работающая корректно. Я не знаю, решили ли они или нет, чтобы быть честными. Эти файлы существуют, и они кажутся доступными в скриптах, составляющих инструменты разработчика Chrome. –

+0

Еще один глупый вопрос: генерировали ли вы входы от модели, подлежащей проверке? –

ответ

3

Вы добавили конфигурацию MVC?

protected void Application_Start() { 
    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    // this line is required for fluent validation 
    FluentValidationModelValidatorProvider.Configure(); 
} 

Кроме того, необходимо настроить каждый вид модели/валидатор:

[Validator(typeof(PersonValidator))] 
public class Person { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public int Age { get; set; } 
} 

public class PersonValidator : AbstractValidator<Person> { 
    public PersonValidator() { 
     RuleFor(x => x.Id).NotNull(); 
     RuleFor(x => x.Name).Length(0, 10); 
     RuleFor(x => x.Email).EmailAddress(); 
     RuleFor(x => x.Age).InclusiveBetween(18, 60); 
    } 
} 

Если это не помогает, не могли бы вы опубликовать пример валидатор, который не работает правильно? Не все проверки могут выполняться на стороне клиента. Например, следующий валидатор будет работать только на стороне сервера:

// when validator rules are always server side 
public class ServerSideValidator : AbstractValidator<Person> { 
    public ServerSideValidator() { 
     When(x => x.Name == "Foo",() => { 
      RuleFor(x => x.Email).EmailAddress(); 
     }); 
    } 
} 
+0

THX для ответа, но у меня есть все они. Это мой код проверки: RuleFor (product => product.Manufacturer) .NotNull(); –

+0

Что такое Производитель? Это строка или класс? – Dismissile

+0

просто строка. –

Смежные вопросы