Как я могу сделать «reasonvalidation = false» в ASP.NET MVC 2? - PullRequest
5 голосов
/ 12 августа 2010

У меня две кнопки на одной форме.Один используется для отправки формы, а другой - для поиска.Я не хочу, чтобы кнопка поиска запускала проверку на стороне сервера или на стороне клиента.

Как я могу это сделать?

Спасибо.

Редактировать

Я использую аннотации данных на сервере для проверки, например:

    [Required(ErrorMessage = "Institution is required")]
    [Range(1, 2, ErrorMessage="Please select an institution")]
    [DisplayName("Institution")]
    public int InstitutionId { get; set; }

И на клиенте я использую это:

<% Html.EnableClientValidation(); %>

1 Ответ

5 голосов
/ 24 августа 2010

Чтобы отключить проверку на стороне клиента для вашей кнопки поиска, добавьте на свою страницу скрипт, подобный следующему:

<script type="text/javascript">
  document.getElementById("searchButton").disableValidation = true;
</script>

Проверка на стороне клиента не будет запущена, если кнопка запуска имеет поле с именем "disableValidation ", который оценивается как true.

На стороне сервера ответить на ваш вопрос немного сложнее, поскольку все зависит от того, выполняете ли вы привязку модели и как вы выполняете ее, а также от того, что делает ваш метод контроллера, когда кто-то нажимает на этот поисккнопка.Одним из вариантов может быть просто очистить все ошибки от ModelState ... вот способ сделать это:

private static void ClearErrors(ModelStateDictionary modelState)
{
    foreach (var key in modelState.Keys)
    {
        modelState[key].Errors.Clear();
    }
}

Если вы отправите пример кода с вашего контроллера, я могу попытаться дать лучший ответ,

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