Ich habe eine ziemlich einfache Einrichtung hier mit dem neuen ASP.Net 4.5 in einer Web Forms-Lösung. Ich benutze Twitter Bootstrap seit fast einem Jahr und genieße wirklich die Zeit, die es mir spart und die Konsistenz, die es auf den Tisch bringt. Einige ihrer Javascript-Methoden sind auch sehr nützlich. Ich habe jedoch ein Problem damit, einige der "neuen Wege" einzubauen, die in 4.5 zu tun scheinen. Hier ist mein Master-Seite:ASP.Net 4.5 Twitter Bootstrap und Client Side Validation
<body>
<form id="frmMain" runat="server">
<asp:ScriptManager ID="smManager" runat="server">
<Scripts>
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="bootstrap" />
</Scripts>
</asp:ScriptManager>
...
Und hier ist der Inhalt einer Testseite:
<asp:Content ID="Content2" ContentPlaceHolderID="cphMain" runat="server">
<asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Problem" ControlToValidate="txtTest" CssClass="error" SetFocusOnError="True" ToolTip="Problem">*</asp:RequiredFieldValidator>
<asp:Button ID="btnTest" runat="server" Text="Check" CausesValidation="true" OnClick="btnTest_Click" /><br />
<asp:TextBox ID="txtAnother" runat="server"></asp:TextBox>
<asp:Button ID="btnOk" runat="server" CausesValidation="false" Text="No Check" />
</asp:Content>
Hier ist meine Global.asax.cs Datei die ScriptReferences zu zeigen, wie oben angegeben:
protected void Application_Start(object sender, EventArgs e) {
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
ScriptManager.ScriptResourceMapping.AddDefinition(
"jquery",
new ScriptResourceDefinition {
Path = "~/Scripts/jquery-1.8.2.min.js",
DebugPath = "~/Scripts/jquery-1.8.2.js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js",
CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.8.2.js",
LoadSuccessExpression = "window.jQuery"
}
); // Load jQuery
ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.WebForms;
ScriptManager.ScriptResourceMapping.AddDefinition(
"bootstrap",
new ScriptResourceDefinition {
Path = "~/Scripts/bootstrap.min.js",
DebugPath = "~/Scripts/bootstrap.js"
}
); // Load Bootstrap
Die clientseitige Überprüfung des ersten Textfelds wird nicht ausgelöst. Wenn ich auf den "Check" -Button klicke, macht es einen Rundgang und die Code-Behind's Page.IsValid == false. Das ist gut, aber ich möchte nicht zurückschreiben, wenn die Seite nicht gültig ist.
Ich habe eine weitere Testseite, die nicht meine Master-Seite verwenden, aber in den gleichen Code wie folgt hatte:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Problem" ControlToValidate="txtTest" CssClass="error" SetFocusOnError="True" ToolTip="Problem">*</asp:RequiredFieldValidator>
<asp:Button ID="btnTest" runat="server" Text="Check" OnClick="btnTest_Click" /><br />
<asp:TextBox ID="txtAnother" runat="server"></asp:TextBox>
<asp:Button ID="btnOk" runat="server" CausesValidation="false" OnClick="btnOk_Click" Text="No Check" />
</div>
</form>
Diese Seite die Client-Seite wirft und stoppt damit den Posten zurück, wie ich es will .
Es scheint mir, dass die bootstrap.js die Standard-js-Validierung anhört oder unterbricht. Irgendwelche Vorschläge, wo ich noch Bootstrap verwenden kann? Ich brauche die Datei bootstrap.js, da sie die Dropdown-Menüs behandelt. Ich könnte zumindest die Benutzeroberfläche von jQuery für die Modale verwenden, aber das hilft den Dropdown-Listen nicht.
Ich möchte die neue Technologie verwenden, aber wir haben immer diese Lernkurven.