簡體   English   中英

ASP.NET驗證服務器端

[英]ASP.NET Validation server side

我有一個ASP.NET webform,我想使用相同的驗證控件來驗證客戶端和服務器端。 我似乎無法找到解決方案 - 客戶端驗證工作得很好,但是當我禁用javascript時 - 它忽略了驗證。

非常感謝幫助。

羅馬

在服務器端顯式調用Page.Validate()

或者重載的Page.Validate(字符串)來定位您的一個驗證組。

更新:

我忘記了,運行驗證(..)后,檢查Page.IsValid屬性 - 如果此屬性== false則由您決定是否停止提交頁面。

您始終可以通過validator1.Validate()方法觸發驗證,該方法將執行服務器端比較。 檢查Page.IsValid以查看是否未執行服務器端驗證? 我想你可以通過Page.Validate()調用它。

HTH

如果您正在使用標准驗證控件,即使指定了客戶端驗證,也始終在服務器上重新驗證數據。

請參閱圖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>

找到答案了! 答案是使用Page.Validate()然后檢查Page.IsValid以檢查驗證是否有效。 只使用Page.Validate()沒有幫助 - 代碼繼續並且沒有停止。

謝謝你們,羅曼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM