驗證網頁是否執行 Validator,避免被有心人修改後導致不會觸發Validator

.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void PageIsValid(System.Web.UI.Page Page)
{
if ( Page.IsValid == false )
{
foreach ( System.Web.UI.IValidator wkIValidator in Page.Validators )
{
if ( wkIValidator.IsValid == false )
{
return;
}
}
}
}

錯誤訊息

Page.IsValid cannot be called before validation has taken place. It should be queried in the event handler for a control that has CausesValidation=True and initiated the postback, or after a call to Page.Validate.

CausesValidation=False,ServerSide再執行Page.IsValid會發生此錯誤。

原則上CausesValidation=False,就不需要在判斷Page.IsValid。

如何繞過驗證

EX :

  • Javascript引擎被停用
  • developer tools

Validator預設都會啟用Javascript檢核函數,當使用者輸入內容不符合驗證規則時,可即時顯示錯誤訊息,並阻止表單內容送回伺服器端。

在送出表單按鈕我們在原始碼可以看到onclick事件會自動產生

1
javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(<button name>;, , true, , , false, false))

只要修改成False就不會觸發JS驗證

1
javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(<button name>;, , false, , , false, false))