ここでは、Webフォームソリューションで新しいASP.Net4.5を使用してかなり簡単なセットアップを行っています。私はTwitterBootstrapを1年近く使用していて、それが私を節約する時間とそれがテーブルにもたらす一貫性を本当に楽しんでいます。それらのjavascriptメソッドのいくつかも非常に便利です。しかし、4.5で行う必要があると思われる「新しい方法」のいくつかを組み込むのに問題があります。これが私のマスターページです:
<body>
<form id="frmMain" runat="server">
<asp:ScriptManager ID="smManager" runat="server">
<Scripts>
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="bootstrap" />
</Scripts>
</asp:ScriptManager>
...
テストページの内容は次のとおりです。
<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>
上記のScriptReferencesを表示するためのGlobal.asax.csファイルは次のとおりです。
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
最初のテキストボックスをチェックしているクライアント側は起動していません。[チェック]ボタンをクリックすると、ラウンドトリップとコードビハインドのPage.IsValid==falseが実行されます。それは良いことですが、ページが無効なときに投稿したくありません。
マスターページを使用しない別のテストページを作成しましたが、次のように同じコードが含まれています。
<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>
このページはクライアント側をスローし、したがって、私が望むように投稿を停止します。
bootstrap.jsが標準のjs検証を妨害または中断しているように思われます。まだブートストラップを使用できる提案はありますか?ドロップダウンメニューを処理するので、bootstrap.jsファイルが必要です。少なくともモーダルにはjQueryのUIを使用できますが、それはドロップダウンの助けにはなりません。
新しいテクノロジーを使いたいのですが、私たちは常にこれらの学習曲線を持っています。