Ненавязчивая проверка не запущена - PullRequest
0 голосов
/ 30 декабря 2011

У меня представление 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 выглядят хорошо для меня. Когда я нажимаю кнопку «Отправить», я ожидаю сообщения о проверке, но вместо этого запускается событие oncomplete.

Я здесь очень растерян, кто-нибудь знает, что не так?

Редактировать 1 , я скопировал тот же статический файл Html в папку моего локального проекта и получил к нему доступ через http://localhost:48194/test.htm (мой локальный сервер разработки ASP.NET), и все работает нормально. Но если я загружаю тот же файл из локального IE8 сервера 2008 в http://localhost:87/test.htm (IIS 7), то я получаю проблему. Каким-то образом это заставляет меня задуматься, что-то не так в настройке IIS7, которая правильно или частично блокирует доступ к файлам JavaScript?

Редактировать 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.

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Я звучу так, как будто IIS блокирует JavaScript.

В IIS вы можете установить фильтры , для которых файлы разрешены или запрещены. Может, по какой-то причине кто-то (случайно) заблокировал .js? - Еще одна проблема может быть доступ к файлам. IIS обычно работает под другим пользователем, поэтому, возможно, он не имеет доступа?

Но я просто догадываюсь. Поэтому самый простой способ проверить это - просто зайти напрямую в файл .js. Так что просто откройте свой http://localhost:87/Scripts/jquery-1.6.4.js и проверьте, что возвращает IIS. Может быть, он возвращает ошибку 403, может быть что-то еще, по крайней мере, это, вероятно, поможет выяснить, что не так.

0 голосов
/ 26 февраля 2015
 @section Scripts
 {
 <script src="../Scripts/jquery.validate-vsdoc.js"></script>
<script src="../Scripts/jquery.validate.js"></script>
<script src="../Scripts/jquery.validate.min.js"></script>
<script src="../Scripts/jquery.validate.unobtrusive.js"></script>
<script src="../Scripts/jquery.validate.unobtrusive.min.js"></script>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...