Ich erstelle eine Webanwendung mit Visual Studio 2012. Ich versuche, die Anzahl der Wörter in mein Textfeld einzufügen. Allerdings nach dem Hinzufügen der Javascript-Codes und der HTML-Codes. Ich erhalte den Fehler wie oben angegeben.
Hier ist mein Javascript codiert
Code:
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, "");
}
Servercodes auf der Masterseite
<script type="text/javascript" src="js/JScript.js" ></script>
ASPX-Codes (HTML-Codes)
<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>
Sie benötigen einen web.config-Schlüssel, um den Überprüfungsmodus vor 4.5 zu aktivieren.
Weitere Informationen zu ValidationSettings: UnobtrusiveValidationMode:
Gibt an, wie ASP.NET es den integrierten Prüfersteuerelementen global ermöglicht, unauffälliges JavaScript für die clientseitige Prüflogik zu verwenden.
Typ: UnobtrusiveValidationMode
Standardwert: Keine
Hinweise: Wenn dieser Schlüsselwert auf "None" [Standard] festgelegt ist, verwendet die ASP.NET-Anwendung . das Verhalten vor 4.5 (JavaScript inline in den Seiten) für die clientseitige Validierungslogik. Wenn dieser Schlüsselwert auf "WebForms" festgelegt ist, verwendet ASP.NET HTML5-Datenattribute und spät gebundenes JavaScript aus einer hinzugefügten Skriptreferenz für die clientseitige Validierungslogik.
Beispiel:
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
Anstatt eine neue Funktion zu deaktivieren, habe ich mich dafür entschieden, die Anweisungen des Fehlers zu befolgen. In meinem global.asax.cs habe ich hinzugefügt:
protected void Application_Start(object sender, EventArgs e)
{
string JQueryVer = "1.7.1";
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
{
Path = "~/Scripts/jquery-" + JQueryVer + ".min.js",
DebugPath = "~/Scripts/jquery-" + JQueryVer + ".js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
CdnSupportsSecureConnection = true,
LoadSuccessExpression = "window.jQuery"
});
}
Dies stammt aus einem msdn-Blogpost , der einige der Vorteile von Skriptressourcenzuordnungen hervorhebt. Von besonderem Interesse für mich war die zentrale Kontrolle über die Auslieferung der Skriptdateien anhand von "debug = true", EnableCDN usw.
Es gibt mindestens drei Möglichkeiten, die Verwendung von unauffälligem JavaScript für die clientseitige Validierung zu deaktivieren:
<configuration>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
</configuration>
System.Web.UI.ValidationSettings.UnobtrusiveValidationMode
auf System.Web.UI.UnobtrusiveValidationMode.None
System.Web.UI.Page.UnobtrusiveValidationMode
auf System.Web.UI.UnobtrusiveValidationMode.None
Um die Funktionalität pro Seite zu deaktivieren, ziehe ich es vor, die Eigenschaft Page.UnobtrusiveValidationMode
mit der Anweisung page festzulegen:
<%@ Page Language="C#" UnobtrusiveValidationMode="None" %>
Die unauffällige Überprüfung ist in der neuen Version von ASP.NET standardmäßig aktiviert. Die unauffällige Validierung zielt darauf ab, die Seitengröße zu verringern, indem das Inline-JavaScript zur Durchführung der Validierung durch eine kleine JavaScript-Bibliothek ersetzt wird, die jQuery verwendet.
Sie können es entweder deaktivieren, indem Sie die Datei web.config so bearbeiten, dass sie Folgendes enthält:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
Oder besser noch richtig konfigurieren, indem Sie die Application_Start-Methode in global.asax ändern:
void Application_Start(object sender, EventArgs e)
{
RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
ScriptManager.ScriptResourceMapping.AddDefinition("jquery",
new ScriptResourceDefinition
{
Path = "/~Scripts/jquery-2.1.1.min.js"
}
);
}
Seite 399 von Beginn von ASP.NET 4.5.1 in C # und VB enthält eine Erläuterung des Nutzens einer unauffälligen Validierung und eine exemplarische Vorgehensweise für deren Konfiguration.
Für alle, die RouteConfig suchen. Es wird automatisch hinzugefügt, wenn Sie in Visual Studio ein neues Projekt im Ordner App_Code erstellen. Der Inhalt sieht ungefähr so aus:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Routing;
using Microsoft.AspNet.FriendlyUrls;
namespace @default
{
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
}
}
um der antwort von b_levitt ... auf global.asax ein wenig mehr hinzuzufügen:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
namespace LoginPage
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
string JQueryVer = "1.11.3";
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
{
Path = "~/js/jquery-" + JQueryVer + ".min.js",
DebugPath = "~/js/jquery-" + JQueryVer + ".js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
CdnSupportsSecureConnection = true,
LoadSuccessExpression = "window.jQuery"
});
}
}
}
auf Ihrer default.aspx
<body>
<form id="UserSectionForm" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server">
<Scripts>
<asp:ScriptReference Name="jquery" />
</Scripts>
</asp:ScriptManager>
<%--rest of your markup goes here--%>
</form>
</body>
Ich glaube, ich bin auf dasselbe Dilemma gestoßen. Ich stieß auf das Problem, als ich zu folgendem wechselte:
</system.web>
<httpRuntime targetFramework="4.5"/>
Welches gibt die Fehlermeldung, die Sie oben beschreiben.
hinzufügen:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
Behebt das Problem , veranlasst dann aber Ihre Überprüfungssteuerelemente/Skripte, Javascript-Laufzeitfehler auszulösen. Wenn Sie zu:
</system.web>
<httpRuntime targetFramework="4.0"/>
Sie sollten in Ordnung sein , aber Sie müssen sicherstellen, dass der Rest Ihres Codes wie gewünscht funktioniert/sich verhält. Möglicherweise müssen Sie auch auf einige neue Funktionen verzichten, die erst ab 4.5 verfügbar sind.
P.S. Es wird dringend empfohlen, die folgenden Informationen zu lesen, bevor Sie diese Lösung implementieren. Insbesondere, wenn Sie die Async-Funktionalität verwenden:
https://blogs.msdn.Microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/
UPDATE April 2017: Nach einigem Experimentieren und Testen habe ich eine Kombination gefunden, die funktioniert:
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
<httpRuntime targetFramework="4.5.1" />
mit:
jQuery Version 1.11.3
Das Problem ist auf den Control Validator zurückzuführen. Fügen Sie einfach den J Query-Verweis wie folgt zu Ihrer Webseite hinzu und fügen Sie dann die Überprüfungseinstellungen in Ihre web.config-Datei ein, um das Problem zu beheben. Auch ich hatte das gleiche Problem und das Folgende gab die Lösung für mein Problem.
Schritt 1:
Schritt 2:
Es wird Ihr Problem lösen.
Wenn Ihr Code oder Ihre Konfiguration nach den anderen Antworten korrekt aussieht, hatte ich auch dieses Problem mit einer bereitgestellten Website (Development Staging) und stellte fest, dass das Problem darin bestand, dass die Datei Global.asax umbenannt wurde. (Von mir ein paar Tage zuvor, als ich mit customErrors und dem Application_Error rumgespielt habe)