Html.ClientValidation не работает на MVC - PullRequest
0 голосов
/ 14 июля 2011

Я пытаюсь выполнить проверку на стороне клиента и следовал нескольким учебникам, это выглядит довольно просто, но я понятия не имею, почему это не работает в моем проекте, ниже приведен код:

 <script type="text/javascript" src="/Scripts/jquery-1.4.1.min.js"></script>
 <script type="text/javascript" src="/Scripts/jquery.validate.js"></script>
 <script type="text/javascript" src="/Scripts/MicrosoftMvcJQueryValidation.js"></script>

    <% Html.EnableClientValidation(); %>
    <% using (Html.BeginForm()) {%>
    <%: Html.ValidationSummary("Please Correct the errors and try again")%>

    <div class="editor-label">
            <%: Html.LabelFor(model => model.test,"Test") %>
        </div>
        </td>
        <td>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.test)%>
            <%: Html.ValidationMessageFor(model => model.test)%>
        </div>
        </td>
        </tr>

изм: главная страница

 <script type="text/javascript" src="<%= Url.Content("~/scripts/jquery-1.5.1.js") %>"></script>
    <script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.js") %>"></script>
    <script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.unobtrusive.js") %>"> </script>
    <script src="/Scripts/jquery-ui.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="/Scripts/tiny_mce/jquery.tinymce.js"></script>
    <script src="/Scripts/ie6.js" type="text/javascript"></script>

Любые идеи, почему проверка на стороне клиента не работает, когда я нажимаю клавишу Tab для этого поля.

1 Ответ

2 голосов
/ 14 июля 2011

В ASP.NET MVC 3 jquery и jquery.validate являются средами по умолчанию для выполнения проверки на стороне клиента. Поэтому измените ваш код так:

<script type="text/javascript" src="<%= Url.Content("~/scripts/jquery-1.5.1.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.unobtrusive.js") %>"></script>

<% using (Html.BeginForm()) { %>
    <%= Html.ValidationSummary("Please Correct the errors and try again") %>

    <div class="editor-label">
        <%= Html.LabelFor(model => model.test, "Test") %>
    </div>
    <div class="editor-field">
        <%= Html.TextBoxFor(model => model.test) %>
        <%= Html.ValidationMessageFor(model => model.test) %>
    </div>
<% } %>

На что обратить внимание:

  • Использование jQuery 1.5.1, который используется по умолчанию в комплекте с ASP.NET MVC 3 RTM и обновлением Tools. Убедитесь, что вы используете более позднюю версию jQuery, поскольку в IIRC была некоторая несовместимость между плагином jquery.validate и версией jquery.
  • Использование jquery.validate.js
  • Использование jquery.validate.unobtrusive.js, которое незаметно присоединяет плагин jQuery.validate к атрибутам данных data- * HTML5, испускаемым помощниками Html.
  • Использование помощника Url.Content для ссылки на статические ресурсы вместо жесткого определения их местоположения.
  • Больше не нужно звонить Html.EnableClientValidation()
  • Больше нет необходимости включать любой javascript, который начинается с префикса Microsoft*

Последнее замечание: убедитесь, что в вашем web.config включена ненавязчивая проверка клиентских скриптов:

<appSettings>
    ...
    <add key="ClientValidationEnabled" value="true" />
</appSettings>

Лучший способ получить последние версии этих сценариев - установить Обновление инструментов ASP.NET MVC 3 , создать новый проект ASP.NET MVC 3 с помощью мастера по умолчанию в Visual Studio и извлечь эти 3 сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...