Ненавязчивая проверка ASP.NET MVC 3 - событие перед проверкой? - PullRequest
4 голосов
/ 18 июня 2011

Используя ненавязчивую функцию проверки ASP.NET MVC3, как я могу запустить JavaScript перед запуском проверки?Обработчик отправки Jquery запускается после проверки по очевидным причинам.Я могу подключиться к нажатию на кнопку отправки, но это выглядит не очень элегантно.Любые предложения?

РЕДАКТИРОВАТЬ

Кажется, мое утверждение выше неверно.Как было указано ниже, обработчик отправки запускается до проверки.К сожалению, это не решает мою проблему.

Мой исправленный вопрос:

Мне нужно манипулировать значением формы после отправки формы, но перед проверкой jQuery.Если я изменю значение после отправки с помощью обработчика отправки jQuery, то jQuery проверяет исходное значение, а не новое.

Ответы [ 2 ]

9 голосов
/ 18 июня 2011

Обработчик отправки не запускается после проверки. Это работает раньше. Попробуйте:

$('form').submit(function () {
    alert('validation hasn\'t run yet at this point => see there is no red color over your form input fields yet');

    if ($(this).valid()) {
        alert('the form is valid');
    } else {
        alert('the form is not valid');
    }
});

UPDATE:

После пересмотренного вопроса я все еще не могу воспроизвести проблему. Вот моя модель:

public class MyModel
{
    [Required]
    public string Name { get; set; }
}

и вот мой взгляд:

@model MyModel

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

@using (Html.BeginForm(null, null, FormMethod.Post, new { }))
{
    @Html.EditorFor(x => x.Name)
    @Html.ValidationMessageFor(x => x.Name)
    <input type="submit" value="OK" />
}

<script type="text/javascript">
    $('form').submit(function () {
        $('#Name').val('some value');
    });
</script>

Теперь, если я оставлю поле Имя пустым и отправлю форму, новое значение будет правильно назначено, и форма будет успешно отправлена ​​на сервер без каких-либо ошибок. Если я удаляю строку $('#Name').val('some value');, которая присваивает новое значение, и пытаюсь отправить форму с пустым полем на стороне клиента, запускаются проверки, и форма не отправляется.

0 голосов
/ 18 июня 2011

Я не уверен, что это будет решение, но вы могли бы взглянуть на IClientValidatable Интерфейс http://msdn.microsoft.com/en-us/library/system.web.mvc.iclientvalidatable(v=vs.98).aspx

Вот пример (довольно старый), но должен работать в текущемвыпуск: ASP.NET MVC: добавление проверки на стороне клиента в ValidatePasswordLengthAttribute в ASP.NET MVC 3 Preview http://blogs.msdn.com/b/stuartleeks/archive/2010/07/28/asp-net-mvc-adding-client-side-validation-to-validatepasswordlengthattribute-in-asp-net-mvc-3-preview-1.aspx

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