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 № 1W 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.