Я пытаюсь собрать простую форму, используя ASP.NET MVC, и у меня возникают проблемы при попытке сделать так, чтобы пользовательская клиентская сторона выполняла ненавязчивую проверку для работы.За последние два дня я прочитал десятки учебных пособий, блогов и других страниц, касающихся проверки клиентов ASP.NET.Информация там запутанная, неполная и противоречивая.Лучшее, что я мог найти, это какой-то маркетинговый ум, как это круто, а потом немного кода, без объяснения используемых функций.
Я опубликую здесь свой HTML-код, потому что я почти на 100% уверен, что проблемана стороне клиента.Вот упрощенный HTML-код, созданный моим представлением для вашего удобства.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
</head>
<body>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.0.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>
<script>
function myValidationFunction(value) {
return false;
}
jQuery.validator.addMethod("mycustomvalidation", function (value, element, params) {
return myValidationFunction(value);
});
jQuery.validator.unobtrusive.adapters.add("mycustomvalidation", ["other", "comp", "value"],
function (options) {
options.rules['requiredif'] = {
other: options.params.other,
comp: options.params.comp,
value: options.params.value
};
options.messages['mycustomvalidation'] = options.message;
}
);
</script>
<form action="/test.htm" method="post">
<label for="Field1">Field1</label>
<input data-val="true" data-val-required="Field1 is required." id="Field1" name="Field1" type="text" value="" />
<span class="field-validation-valid error-text" data-valmsg-for="Field1" data-valmsg-replace="true"></span>
<label for="Field2">Field2</label>
<input data-val="true" data-val-myvalidation="Field2 is not valid" data-val-myvalidation-validationcallback="myValidationFunction" id="Field2" name="Field2" type="text" value="" />
<span class="field-validation-valid error-text" data-valmsg-for="Field2" data-valmsg-replace="true"></span>
<input type="submit" value="TEST" />
</form>
</body>
</html>
Для пояснения в Field1 используется встроенная проверка «Требуется».Я включил его только для проверки того, что jquery.validate.min.js и jquery.validate.unobtrusive.min.js действительно работают.
Я пока опишу свои рассуждения.В каком-то блоге я обнаружил, что все, что вам нужно сделать, это создать метатег data-val-myvalidation-validationcallback = "myValidationFunction", который соединит проверку с функцией myValidationFunction.Осталось только реализовать эту функцию в скрипте.Конечно, это не работает.
В другом учебнике было сказано что-то о разборе формы после загрузки документа, разборе метатегов и установлении соединения aproproate.Ну, это тоже не так.