2012-10-01 50 views
5

我有一個相當簡單的設置,在Web窗體解決方案中使用新的ASP.Net 4.5。我一直使用Twitter Bootstrap將近一年,真正享受它節省我的時間以及它爲表格帶來的一致性。他們的一些javascript方法也非常有用。但是,我遇到了一些問題,需要在4.5中完成一些「新方法」。這裏是我的母版頁:ASP.Net 4.5 Twitter引導程序和客戶端驗證

<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> 

,這裏是我的Global.asax.cs文件,以顯示ScriptReferences上面提到:

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?我需要bootstrap.js文件,因爲它處理下拉菜單。我至少可以使用jQuery的用戶界面模式,但是這對下拉菜單沒有幫助。

我想使用新技術,但我們總是有這些學習曲線。

回答