2012-10-15 43 views
0

我有一個.aspx頁面,顯示來自數據庫的信息,並允許用戶添加新項目。ASP驗證殺死回發

該頁面包含一個updatepanel。在這種UpdatePanel中,有一個GridView和麪板的一些輸入要素:

<asp:Panel runat="server" ID="NewPersonPanel" DefaultButton="NewPersonButton" Visible="false"> 
    <div id="newItemForm"> 
     <label for="NewPersonName">Name:</label>  
     <asp:TextBox ID="NewPersonName" runat="server" MaxLength="50" />   
     <asp:RequiredFieldValidator ID="RequiredName" EnableClientScript="true" ControlToValidate="NewPersonName" ErrorMessage="Name must not be empty" ValidationGroup="NewPersonValidationGroup" runat="server" /><br /> 

     <label for="NewPersonFirstName">First Name:</label>  
     <asp:TextBox ID="NewPersonFirstName" runat="server" MaxLength="50" />   
     <asp:RequiredFieldValidator ID="RequiredFirstName" EnableClientScript="true" ControlToValidate="NewPersonFirstName" ErrorMessage="First name must not be empty" ValidationGroup="NewPersonValidationGroup" runat="server" /><br /> 

     <div id="newPersonControls"> 
      <asp:LinkButton ID="NewPersonButton" ValidationGroup="NewPersonValidationGroup" runat="server" OnCommand="PersonGrid_Insert">Create</asp:LinkButton> 
      <asp:LinkButton ID="HideInputFormButton" runat="server" OnCommand="HideInputForm">Cancel</asp:LinkButton> 
     </div> 
    </div> 
</asp:Panel> 

沒有驗證元素,頁面的作品就好了。當我添加驗證時,事情變得很奇怪;當我嘗試在字段爲空時單擊「創建」按鈕時,會出現紅色驗證消息,但會在頁面上殺死所有回發。如果我填寫字段,紅色文字會消失,但我無法再使用任何按鈕。創建新人,刪除表單,排序網格,過濾網格,網格分頁......都停止工作。使用調試器它似乎不再有任何調用我的代碼,所以看起來像失敗的驗證在JavaScript中做了一些事情,導致所有其他「__doPostBack」方法失敗。

我的確找到這個主題:asp.net: Postback disabled after validation failed但是那裏沒有任何答案。

回答

2

因爲您設置了驗證,您將無法回發。

但是可以通過使用ValidatorEnable(object,true/false)

這有兩個參數禁用它們,第一個是對象,第二是啓用還是禁用。

你的情況是錯誤的。

但您必須爲您的表單中的所有控件(爲其設置驗證)執行此操作。

+0

哦,我認爲ValidationGroup會自動處理它。 這是否意味着我必須弄亂並編輯導致回發的每一個鏈接按鈕?奇怪的是,只要驗證不必觸發,一切都可以正常工作;如果我填寫兩個字段,我可以創建人,瀏覽gridview,使用分頁等等。 –

+0

nopes如果你已經使用了組,那麼你也可以通過組來完成。 –

+0

看看這個博客,這個人給了一個整潔的例子http://veskokolev.blogspot.in/2007/11/how-to-disable-validation-group-with.html –