我有一個ASP.NET網絡表格,我想驗證客戶端和服務器端,使用相同的驗證控件。 我似乎無法找到解決方案 - 客戶端驗證很好,但是當我禁用JavaScript - 它忽略驗證。ASP.NET驗證服務器端
幫助將不勝感激。
羅馬
我有一個ASP.NET網絡表格,我想驗證客戶端和服務器端,使用相同的驗證控件。 我似乎無法找到解決方案 - 客戶端驗證很好,但是當我禁用JavaScript - 它忽略驗證。ASP.NET驗證服務器端
幫助將不勝感激。
羅馬
您可以隨時通過validator1.Validate()
方法,它會做服務器端的比較觸發驗證。檢查Page.IsValid
以查看服務器端驗證是否未執行?我想你可以通過Page.Validate()
來調用它。
HTH
顯式調用服務器端Page.Validate()。
或超載的Page.Validate(string)定位您的驗證組之一。
更新:
我忘了,你運行驗證(..)之後,檢查Page.IsValid
property - 這取決於你從當這個屬性== false
停止提交頁面。
嗨, 我試過這個 - 但仍然沒有工作。 我使用常規的asp.net驗證器。即使不是自定義的。 當我禁用JavaScript - 它只是通過,即使我明確使用Page.Validate(); – Roman 2010-01-04 18:22:11
嗯......如果你還沒有,嘗試重載的版本。 否則,您從哪個方法或事件中調用Page.Validate? – 2010-01-04 18:32:44
忘記了Page.IsValid,我錯過了那條船。 – 2010-01-04 18:38:37
如果您使用的是標準驗證控件,即使指定了客戶端驗證,也會始終在服務器上重新驗證數據。
見注意本文中圖2 :,它說之後:
仔細檢查客戶端驗證
一個有趣的一點是,即使 雖然表單數據進行驗證的 客戶端(不需要 附加請求,並從服務器響應 驗證數據), 輸入的數據在 服務器上重新驗證。在 客戶端上檢查數據並發現有效後,使用相同的 驗證規則在服務器上重新檢查 。這些規則 你建立,以確保對某些 棘手的程序員在那裏試圖 繞過驗證過程 張貼頁面到服務器,就好像 它通過驗證。
http://msdn.microsoft.com/en-us/library/aa479013.aspx
但是,您可以通過調用Page.Validate()
羅馬迫使服務器上驗證,
可以使用ASP.net自定義驗證同時提供客戶端和服務器方法進行驗證。這樣,如果你禁用了js,你仍然應該使用服務器驗證方法。在這個例子中,「ClientValidate」函數將被定義在頁面上的JavaScript塊中,並且「ServerValidate」函數將存在於代碼隱藏文件中。
<asp:textbox id="textbox1" runat="server">
<asp:CustomValidator id="valCustom" runat="server"
ControlToValidate="textbox1"
ClientValidationFunction="ClientValidate"
OnServerValidate="ServerValidate"
ErrorMessage="*This box is not valid" dispaly="dynamic">*
</asp:CustomValidator>
所有ASP.NET驗證程序都提供客戶端和服務器端驗證 - 不僅僅是CustomValidator。 – 2010-01-04 17:46:25
找到答案! 答案是使用Page.Validate(),然後檢查Page.IsValid以檢查驗證是否有效。 只有使用Page.Validate()沒有幫助 - 代碼繼續,並沒有停止。
謝謝你們, 羅馬
你能不能給我們更多的信息?具體來說,你使用了什麼驗證控件?內置的ASP.NET驗證器?如果是這樣,那麼您正在使用哪些(例如CustomValidator)。有些代碼片段總是有幫助的。最後,你使用更新面板或任何AJAX-Y? – 2010-01-04 17:33:41
使用常規驗證器,完全沒有CustomValidator。 沒有AJAXy,沒有面板...什麼都沒有。只是一個普通的形式:) – Roman 2010-01-04 18:23:08