Проверка того, что форма ввода не является пустой - PullRequest
2 голосов
/ 29 июля 2010

У меня есть этот код для отправки формы ..

<input type="submit" runat="server" id="buttonSubmit" value="Add" style="width:100px;" />

Мой BeginForm похож на это ..

<% using (Html.BeginForm("Insert", "StudentController", FormMethod.Post, new { @id = "exc-" }))
       {%>

У меня есть одно текстовое поле в моем представлении, мне нужно проверить мое текстовое полеПусто или нет, если это пустое окно с сообщением о предупреждении: «Пожалуйста, введите какое-либо значение в текстовое поле, в противном случае перейдите к контроллеру».

Пожалуйста, помогите ли вы мне помочь?

спасибо

1 Ответ

4 голосов
/ 29 июля 2010

Вы можете сделать это многими способами, но, возможно, самым чистым является использование аннотаций данных в вашей модели представления.Например -

public class MyViewModel
{
    [Required]
    public string MyProperty { get; set; }
}

Теперь в вашем представлении используйте

<% Html.EnableClientValidation(); %>

непосредственно перед запуском формы.Это приведет к тому, что объект JavaScript будет генерироваться в разметке, отправленной клиенту.Сценарий выглядит следующим образом:

<script type="text/javascript">
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"FirstName","ReplaceValidationMessageContents":true,"ValidationMessageId":"FirstName_validationMessage","ValidationRules":[{"ErrorMessage":"The First Name field is required.","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"LastName","ReplaceValidationMessageContents":false,"ValidationMessageId":"LastName_validationMessage","ValidationRules":[{"ErrorMessage":"The Last Name field is required.","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"EmailAddress","ReplaceValidationMessageContents":false,"ValidationMessageId":"EmailAddress_validationMessage","ValidationRules":[{"ErrorMessage":"The Email Address field is required.","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"ZipCode","ReplaceValidationMessageContents":false,"ValidationMessageId":"ZipCode_validationMessage","ValidationRules":[{"ErrorMessage":"Zip Code must be 5 character long.","ValidationParameters":{"minimumLength":0,"maximumLength":5},"ValidationType":"stringLength"},{"ErrorMessage":"Zip Code must be five digits.","ValidationParameters":{"pattern":"\\d{5}"},"ValidationType":"regularExpression"},{"ErrorMessage":"The Zip Code field is required.","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false,"ValidationSummaryId":"valSumId"});
//]]>
</script>

Этот объект содержит метаданные проверки, которые могут использоваться плагином проверки на стороне клиента для подключения проверки на стороне клиента.Плагин, который поставляется с ASP.NET MVC 2, является валидатором Microsoft AJAX, и вам нужно будет включить эти скрипты на странице, чтобы использовать валидацию (MicrosoftAjax.js, MicrosoftMVCAjax.js и MicrosoftMvcValidation.js в этом порядке).

В качестве альтернативы, если вам удобнее использовать jQuery, вы можете получить скрипт в исходном коде MvcFutures, который подключает валидацию к плагину jQuery validate (это не полноценный скрипт, в котором отсутствуют несколько частей, таких какполучение резюме проверки на стороне клиента).Сценарий MicrosoftMvcJQueryValidation.js, и вы можете получить его здесь

Преимущество использования аннотаций данных в том, что вы получаете проверку на стороне сервера, а проверка на стороне клиента и на сервере будет проверяться дляожидаемые значения.Кроме того, аннотации данных позволяют устанавливать сообщения об ошибках и имена для меток полей из атрибутов (сообщения об ошибках и отображаемые имена * также могут поступать из файлов ресурсов)

* Поскольку MVC2 был скомпилирован с версией .NET 3.5аннотаций данных, отображаемое имя не может быть установлено из файлов ресурсов.Есть обходной путь к этому - атрибут DisplayName из ресурсов? .


СЕЙЧАС EASY WAY


Просто установитеобработчик события submit в форме

var form = document.getElementById('exc-');
var oldSubmit = form.onsubmit || function() {};
form.onsubmit = function() {
    var input = document.getElementById('myinput');
    if (input.value === '') {
        alert('please Enter some value in textbox');
        return false;
    }
    oldSubmit();
}

или с помощью jQuery

$('#exc-').submit(function() {
    if ($('#myinput').val() === '') {
        alert('please Enter some value in textbox');
        return false;
    }              
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...