/ / Html.ClientValidation nie działa na mvc - asp.net-mvc, asp.net-mvc-3, sprawdzanie poprawności po stronie klienta

Html.ClientValidation nie działa na mvc - asp.net-mvc, asp.net-mvc-3, sprawdzanie poprawności po stronie klienta

Próbuję opracować walidację po stronie klienta i przeszedłem kilka tutoriali, wygląda to dość prosto, ale nie mam pojęcia, dlaczego nie pracuje nad moim projektem, poniżej jest kod:

 <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>

edytowane: Strona główna

 <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>

Wszelkie pomysły Dlaczego walidacja po stronie klienta nie działa po naciśnięciu przycisku dla tego pola.

Odpowiedzi:

2 dla odpowiedzi № 1

W ASP.NET MVC 3, jquery i jquery.validate są domyślnymi strukturami do sprawdzania poprawności strony klienta. Więc zmodyfikuj swój kod, aby wyglądał tak:

<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>
<% } %>

Rzeczy do zauważenia:

  • Korzystanie z jQuery 1.5.1, który jest domyślny w pakiecie z ASP.NET MVC 3 RTM i aktualizacją narzędzi. Upewnij się, że korzystasz z późniejszej wersji jQuery jako IIRC, ale istnieje niekompatybilność między wtyczką jquery.validate a wersją jquery.
  • Za pomocą jquery.validate.js
  • Za pomocą jquery.validate.unobtrusive.js która dyskretnie dołącza wtyczkę jQuery.validate do danych HTML5 * atrybutów emitowanych przez pomocników HTML.
  • Używając Url.Content pomocnik do odnoszenia się do zasobów statycznych zamiast kodowania ich lokalizacji.
  • Nie trzeba już dzwonić Html.EnableClientValidation()
  • Konieczne jest dołączanie javascriptu, który zaczyna się od prefiksu Microsoft*

Ostatnia uwaga: upewnij się, że w twoim web.config dyskretne sprawdzanie poprawności skryptu klienta jest włączone:

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

Najlepszym sposobem uzyskania najnowszych wersji tych skryptów jest zainstalowanie Aktualizacja narzędzi ASP.NET MVC 3, utwórz nowy projekt ASP.NET MVC 3 za pomocą domyślnego kreatora w Visual Studio i pobierz te 3 skrypty.