Tworzę aplikację internetową za pomocą programu Visual Studio 2012. Próbuję dodać liczbę słów do mojego pola tekstowego. Jednak po dodaniu kodów javascript i kodów HTML. Otrzymuję błąd, jak podano powyżej.
Oto moje kodowanie javascript
Kod :
function validateLimit(obj, divID, maxchar) {
objDiv = get_object(divID);
if (this.id) obj = this;
var remaningChar = maxchar - trimEnter(obj.value).length;
if (objDiv.id) {
objDiv.innerHTML = remaningChar + " characters left";
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
if (objDiv.id) {
objDiv.innerHTML = "0 characters left";
}
return false;
}
else
{ return true; }
}
function get_object(id) {
var object = null;
if (document.layers) {
object = document.layers[id];
} else if (document.all) {
object = document.all[id];
} else if (document.getElementById) {
object = document.getElementById(id);
}
return object;
}
function trimEnter(dataStr) {
return dataStr.replace(/(\r\n|\r|\n)/g, "");
}
Kody serwera na stronie wzorcowej
<script type="text/javascript" src="js/JScript.js" ></script>
Kody ASPX, (kody HTML)
<tr>
<th style="width: 595px; height: 135px;">Official Report :</th>
<td colspan="4" style="height: 135px">
<asp:TextBox ID="tbofficial" runat="server" Height="121px" TextMode="MultiLine" Width="878px" MaxLength="500" ToolTip="Summary:(500 characters)" onkeyup="return validateLimit(this, 'lblMsg1', 500)" ></asp:TextBox>
<div id="lblMsg1">500 characters left</div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="tbofficial" Display="Dynamic"
SetFocusOnError="True">*</asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblmsg" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
<asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" />
</td>
</tr>
źródło
targetFramework="4.5"
. Musiałem jawnie dodać to ustawienie do mojego pliku web.config, aby działało.Zamiast wyłączać nową funkcję, zdecydowałem się postępować zgodnie z instrukcjami błędu. W moim global.asax.cs dodałem:
Pochodzi z postu na blogu msdn, który podkreśla niektóre zalety mapowania zasobów skryptów. Szczególnie zainteresował mnie scentralizowana kontrola nad dostarczaniem plików skryptów w oparciu o „debug = true”, EnableCDN itp.
źródło
<script type='text/javascript'> //<![CDATA[ $(document).ready(function () { $("#menu").menu(); }) //]] </script>
. Czy to jest właściwe podejście?Istnieją co najmniej trzy sposoby, aby wyłączyć użycie dyskretnego JavaScript do sprawdzania poprawności po stronie klienta:
System.Web.UI.ValidationSettings.UnobtrusiveValidationMode
właściwości static naSystem.Web.UI.UnobtrusiveValidationMode.None
System.Web.UI.Page.UnobtrusiveValidationMode
właściwości instance naSystem.Web.UI.UnobtrusiveValidationMode.None
Aby wyłączyć tę funkcję dla poszczególnych stron, wolę ustawić
Page.UnobtrusiveValidationMode
właściwość za pomocą dyrektywy strony:źródło
Dyskretne sprawdzanie poprawności jest domyślnie włączone w nowej wersji programu ASP.NET. Dyskretna walidacja ma na celu zmniejszenie rozmiaru strony poprzez zamianę wbudowanego kodu JavaScript w celu przeprowadzenia walidacji na małą bibliotekę JavaScript korzystającą z jQuery.
Możesz go wyłączyć, edytując plik web.config, aby uwzględnić następujące elementy:
Lub lepiej, ale odpowiednio skonfiguruj, modyfikując metodę Application_Start w global.asax:
Strona 399 z początku programu ASP.NET 4.5.1 w języku C # i VB zawiera omówienie korzyści z dyskretnej weryfikacji i instrukcje konfiguracji.
Dla tych, którzy szukają RouteConfig. Jest dodawany automatycznie po utworzeniu nowego projektu w Visual Studio do folderu App_Code. Zawartość wygląda mniej więcej tak:
źródło
dodać trochę więcej do odpowiedzi od b_levitt ... na global.asax:
na default.aspx
źródło
Myślę, że spotkałem ten sam problem. Problem zacząłem napotykać, kiedy zmieniłem na:
Co daje komunikat o błędzie opisany powyżej.
dodając:
Rozwiązuje problem, ale powoduje, że formanty sprawdzające / skrypty sprawdzają błędy środowiska wykonawczego Javascript. Jeśli zmienisz na:
Powinieneś być OK, ale musisz upewnić się, że reszta kodu działa / zachowuje się tak, jak chcesz. Być może będziesz musiał zrezygnować z niektórych nowych funkcji dostępnych tylko od wersji 4.5.
PS Zdecydowanie zalecamy zapoznanie się z poniższymi informacjami przed wdrożeniem tego rozwiązania. Zwłaszcza jeśli korzystasz z funkcji Async:
https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/
AKTUALIZACJA Kwiecień 2017: Po kilku eksperymentach i testach wymyśliłem kombinację, która działa:
z:
źródło
Problem wystąpił z powodu sprawdzania poprawności kontroli. Po prostu dodaj odwołanie J Query do swojej strony internetowej w następujący sposób, a następnie dodaj ustawienia sprawdzania poprawności w pliku web.config, aby rozwiązać problem. Ja również stanąłem przed tym samym problemem, a poniższe rozwiązania rozwiązały mój problem.
Krok 1:
Krok 2 :
To rozwiąże twój problem.
źródło
Ma 3 rozwiązania, o których wspominali inni faceci ... ale kiedy wypróbowałem Application_Start, Moja inna biblioteka jQuery, taka jak Pickup_Date_and_Time, nie działa ... więc testuję drugi sposób i odpowiedź: 1- ustaw docelową ramkę na Pre 4.5 2 - Użyj „UnobtrusiveValidationMode =„ None ”w nagłówku strony =>
działa dla mnie i nie zakłóca mojej innej funkcji jQuery.
źródło