2009-10-12 20 views
0

我希望允許用戶選擇離開註冊頁面。然而,註冊頁面是帶有RequiredFieldValidators的ASP:嚮導。ASP.NET RequiredFieldValidator不讓我離開asp:嚮導導航

如何解決這個問題,而不刪除RequiredFieldValidators?該向導的「下一步」按鈕似乎是內置於嚮導控件,似乎並沒有讓我應用ValidationGroup屬性,這似乎是處理這種情況的典型方法。

感謝

回答

2

http://forums.asp.net/p/1022184/1385194.aspx

如何驗證我的嚮導控制步驟搜索一遍又一遍後,我想出了這些解決方案。請記住,每一步都應該有它自己的驗證組。對於這些樣本,我使用「Form」作爲我的驗證組。

1)驗證下一個按鈕的點擊。 對於這一個,我簡單地覆蓋嚮導控件通過使用2 asp:Button自動生成的上一個和下一個按鈕。然後將原因驗證設置爲true,並分配驗證組。請注意,重要的部分在CommandName部分。

<StepNavigationTemplate > 
<asp:Button ID="btnPrevious" runat="server" CssClass="WizardControlButton" Text="Previous" CommandName="MovePrevious" /> 
<asp:Button ID="btnNext" runat="server" CssClass="WizardControlButton" CommandName="MoveNext" Text="Next" CausesValidation="true" ValidationGroup="Form" /> 
</StepNavigationTemplate> 

2)驗證側邊欄點擊 這一個也很簡單。您將代碼添加到控件的SideBarButtonClick事件中,然後檢查您當前的步驟標識。在參數中使用驗證組驗證頁面後。如果該頁面無效。它取消了事件。

Protected Sub wizRegistration_SideBarButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles wizRegistration.SideBarButtonClick 
    If wizRegistration.ActiveStep.ID = "wizSelectPostalCode" AndAlso e.NextStepIndex > e.CurrentStepIndex Then 
     Page.Validate("Form") 
     If Not Page.IsValid() Then 
      e.Cancel = True 
     End If 
    End If 
End Sub 
+0

非常感謝。我不敢相信我自己找不到。有用! 有關未來發現此解決方案的任何人的說明:如果您需要覆蓋嚮導按鈕的第一步,請使用。另外,請記住在標記中連接wizRegistration_SideBarButtonClick事件。 – HaterTot

0

你能不能把另一個按鈕標記爲「取消」或「跳過」和CausesValidation屬性設置爲False嚮導之外?

+0

這聽起來是一種可行的解決方案,但會大大減少我試圖創建的精緻用戶界面。 – HaterTot

1

我遇到了同樣的問題。最初的需求是一種允許用戶遠離ASP.NET嚮導的控制頁面的方式,該頁面通過框架的ValidationGroup機制實現驗證。在我的情況下,我的Site.master主文件頭中有一個<asp:HyperLink>控件。

而不是創建嚮導頁面ValidationGroup與它的嚮導按鈕關聯,我選擇了將其分配到不同的,未使用的ValidationGroup「排除」我<asp:HyperLink>控制。