Наконец-то я получил решение.
Прежде всего, мои формы никогда не были привязаны к обратным вызовам проверки, предоставляемым кодом внутри скрипта MicrosoftMvcJQueryValidation.js
. Это потому, что я использую диалоги jQuery, а форма находится внутри диалога, а скрипт включен в главную страницу.
Моей первой попыткой найти решение было изменение MicrosoftMvcJQueryValidation.js
. В частности, я добавил функцию EnableClientSideValidation()
, куда я переместил код, который был в функции $(document).ready
, как в следующем примере кода
function EnableClientSideValidation() {
var allFormOptions = window.mvcClientValidationMetadata;
if (allFormOptions) {
while (allFormOptions.length > 0) {
var thisFormOptions = allFormOptions.pop();
__MVC_EnableClientValidation(thisFormOptions);
}
}
}
$(document).ready(function () {
EnableClientSideValidation();
});
Затем я вызвал ту же функцию внутри блока скрипта, который поместил в код разметки диалога $(document).ready()
function
С помощью firebug я поместил точку останова в функцию EnableClientSideValidation()
, а затем испытал факт, который вызывался только тогда, когда главная страница была готова, но не из диалога. Это было связано с тем, что у меня был блок скрипта «диалог» внутри тега <form>...</form>
, и поэтому скрипт не работал.
Код, подобный этому
<% using (Html.BeginForm()) { %>
//DIALOG FORM CODE WAS HERE
<script type="text/javascript">
$(document).ready(function () {
EnableClientSideValidation();
});
</script>
<% } %>
был изменен на
<% using (Html.BeginForm()) { %>
//DIALOG FORM CODE WAS HERE
<% } %>
<script type="text/javascript">
$(document).ready(function () {
EnableClientSideValidation();
});
</script>
Наконец-то все заработало! Я хотел бы поблагодарить vandalo и kdawg за помощь в поиске решения. Что-то все еще пропустили, но ваши ответы стимулировали мою голову.
Я публикую это для других, которые могут иметь такую же проблему.