У меня есть вид MVC3, локальная отладка отлично, после того, как я развернулся на сервере, я обнаружил, что ненавязчивая проверка не срабатывает вообще.Ненавязчивая проверка не сработала
Я спас выход на статический 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>
Dummy
</title>
<link type="text/css" href="/Content/site.css" rel="stylesheet" />
<script type="text/javascript" src="/Scripts/jquery-1.6.4.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script type="text/javascript" src="/Scripts/jquery.unobtrusive-ajax.js"></script>
</head>
<body>
<form action="/Test/Dummy" data-ajax="true" data-ajax-complete="MyDummy.OnComplete" data-ajax-method="Post" id="form0" method="post">
<select data-val="true" data-val-number="The field SourceId must be a number." data-val-required="SourceId required." id="SourceId" name="SourceId"></select>
<span class="field-validation-valid" data-valmsg-for="SourceId" data-valmsg-replace="true"></span><br />
<select data-val="true" data-val-number="The field DestinationId must be a number." data-val-required="DestinationId required." id="DestinationId" name="DestinationId"></select>
<span class="field-validation-valid" data-valmsg-for="DestinationId" data-valmsg-replace="true"></span><br />
<input type="submit" value=" Submit " class="ButtonStyle" />
</form>
<script type="text/javascript">
var MyDummy = {
OnComplete: function (content) {
alert(content.responseText);
}
}
</script>
</body>
</html>
Я считаю, что я включил нужные файлы JavaScript, следующий раздел все тонированное Html выглядит хорошо для меня. Когда я нажимаю кнопку отправки, я ожидаю подтверждение валидации, но вместо этого запускается незавершенное событие.
Я очень потерялся здесь, никто не знает, что не так?
Edit 1, я скопировал же статический файл Html в папку моего локального проекта и доступ к нему через http://localhost:48194/test.htm (мой локальный сервер развития ASP.NET) и все работает отлично. Но если я загружаю тот же файл из локального IE8 сервера 2008 на http://localhost:87/test.htm (IIS 7), то у меня возникла проблема. Почему-то это заставляет меня думать, что есть что-то неправильное в настройке IIS7, которая блокирует или частично блокирует доступ к файлам JavaScript правильно?
Edit 2, Если изменить ссылку JS для использования CDN как
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.js"></script>
Затем он работает. Я действительно не знаю, что IIS7 мог бы сделать, чтобы повредить локальный транспорт JS-файлов.
Создал jsfiddle для html, и он отлично работает. http://jsfiddle.net/epignosisx/jcPNu/. Вы проверили вкладку сети в Firebug для загрузки ресурсов? – epignosisx
Я использовал Filddler и видел, что следующие файлы загружаются последовательно: 304 - HTTP - /test.htm; 304 - HTTP - /Content/site.css; 304 - HTTP - /Scripts/jquery.validate.js; 304 - HTTP - /Scripts/jquery-1.6.4.min.js; 304 - HTTP - /Scripts/jquery.validate.unobtrusive.js; 304 - HTTP - /Scripts/jquery.unobtrusive-ajax.js; Не думайте, что я пропустил какой-либо файл. – hardywang
Не могли бы вы указать URL-адрес производственного сервера? – epignosisx