2010-10-13 57 views
0

我有搜索網絡,沒有發現任何有幫助,所以想我會問這裏。造型驗證錯誤的相關輸入,如MVC

我有一個簡單的asp.net 2.0窗體。

<form runat="server"> 
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" /> 

    <asp:TextBox ID="txt1" runat="server" ValidationGroup="valGroup1"></asp:TextBox> 
    <asp:RequiredFieldValidator ControlToValidate="txt1" ValidationGroup="valGroup1" runat="server" Display="Dynamic" ID="val1" ErrorMessage="*"></asp:RequiredFieldValidator> 

    <asp:Button ID="btn1" runat="server" ValidationGroup="valGroup1" CausesValidation="true" Text="submit" /> 
</form> 

我想要做的是在特定輸入的驗證失敗時更改輸入的樣式。最好通過添加一個類,而不是內聯樣式。

我可以做到這一點,當javascript通過後面的代碼不可用,但我想要做的是有同樣的情況發生時,JavaScript可用。

我知道ASP.NET注入一個名爲Page_Validators的全局js變量,它是頁面上所有驗證器跨度的數組。有沒有更容易的方法來做到這一點,而不是循環所有這些?

編輯

我能有點用下面的做:

<script type="text/javascript"> 

     function ValidateInputs() { 

      var validators = Page_Validators; 

      for (var i = 0; i < validators.length; i++) { 
       var validator = validators[i]; 
       if (!validator.isvalid) { 
        document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;"); 
       } 
      } 

     } 

    </script> 

只是不知道是否有更好的方法?

我可以得到微軟驗證腳本來調用我的驗證方法嗎?或者我可以手動掛鉤到驗證事件?

回答

0

事實證明,我的答案是我將要得到的唯一答案!

<script type="text/javascript"> 

     function ValidateInputs() { 


      Page_ClientValidate();//Validate the validators using microsofts validation 

      var validators = Page_Validators; 

      for (var i = 0; i < validators.length; i++) { 
       var validator = validators[i]; 
       if (!validator.isvalid) { 
        document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;"); 
       } 
      } 

     } 

    </script> 

此外,在按鈕,設置OnClientClick="ValidateInputs();"OnClientClick="ValidateInputs();return false;"

0

這是一個很好的做法;除非你想用自己定製的公共事件來替代公共事件(這會變得凌亂),否則沒有任何公共事件或別的東西可以利用。

HTH。

+0

感謝布賴恩。我從來沒有這樣做,只是試圖挖掘那些可能知道是否有更好的方法的天才。我想這個解決方案可能會起作用,儘管我必須改變我稱之爲驗證事件的方式,此時我已經將它放到了onclick上,在驗證器在該頁面返回驗證響應之前觸發驗證事件。 :( – jimplode 2010-10-13 16:28:56

+0

也許你可以利用form.onsubmit作爲展示目的,我不認爲有一個通用事件,除非你用包含你的邏輯的自定義實現來替換Page_Validate方法。 – 2010-10-13 16:40:59