Mvc Foolproof не работает на mvc3

У меня есть приложение MVC3.

Это модель:

public class Customer
{
    [Required]
    public string Email { get; set; }

    [Required]
    public string Answer1 { get; set; }

    [Required]
    [NotEqualTo("Answer1")]
    public string Answer2 { get; set; }
}

Я включил навязчивую проверку в файле web.config:

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

А это на моем _layout.cshtml:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

<script src="@Url.Content("~/Scripts/mvcfoolproof.unobtrusive.js")" type="text/javascript"></script>

Моя проблема в том, что MvcFoolproof не работает. Проверка аннотаций данных mvc Required работает. Что я здесь пропустил? Спасибо!


person Gerald    schedule 06.08.2013    source источник
comment
Есть ли у вас ошибки в браузере?   -  person Piotr Stapp    schedule 06.08.2013
comment
Нет, у меня нет ошибок в браузере.   -  person Gerald    schedule 06.08.2013


Ответы (1)


Прежде всего, я полагаю, вы включили using Foolproof; в свою модель.

Во-вторых, я считаю, что вам тоже может понадобиться этот скрипт (для правильной работы проверки на стороне клиента) <script src="/Scripts/MvcFoolproofJQueryValidation.min.js"></script>.

В-третьих, вы добавили пакет Foolproof с помощью NuGet? Ваш packages.config должен содержать что-то вроде <package id="foolproof" version="0.9.4517" targetFramework="net45" />.

Кроме того, вы отображаете какие-либо сообщения проверки в представлении? Они отображаются для обязательных свойств, но не для атрибута NotEqualTo?

Наконец, правильно ли вы отображаете все эти свойства в представлении, используя, например. @Html.EditorFor(model => model.Answer1)? Если у Answer2 нет чего-то для сравнения, он, конечно же, не подтвердится. И вы используете вызов проверки jQuery в форме?

Здесь в основном снимают в темноте, но работа с защитой от дурака обычно выполняется по принципу «нажми и работай».

person Mats Adborn    schedule 20.11.2013