2008-10-15 59 views
5

Related ArticleASP.NET頁面驗證

在一個類似的話題,上面的文章,但更具體的注意。您究竟如何處理視圖狀態下的項目(以便在提交時包含它們),但是也可以通過AJAX進行更改。例如,假設我們有一個通過AJAX Web服務調用(而不是更新面板)填充的下拉列表。一旦下拉列表中的項目發生變化,我怎樣才能讓頁面進行驗證?

回答

3

您沒有驗證您的下拉列表嗎?您正在驗證用戶選擇的值。這與其他文章的建議非常相似,因爲JavaScript或其他工具可以更改html或創建自己的POST,所以您必須始終在服務器端驗證。假設所有客戶端請求都可能被篡改,並假定沒有發生客戶端驗證。


如果您使用的web表單模型....

如果你只是要檢查的值在下拉myAjaxDropDown選擇,使用

<asp:RequiredFieldValidator id="dropdownRequiredFieldValidator" 
      ControlToValidate="myAjaxDropDown" 
      Display="Static" 
      InitialValue="" runat=server> 
      * 
     </asp:RequiredFieldValidator> 

你可以也想看看asp:CustomValidator - 用於服務器端驗證:

<asp:CustomValidator ID="myCustomValidator" runat="server" 
    onservervalidate="myCustomValidator_ServerValidate" 
    ErrorMessage="Bad Value" /> 

Both plu g進入asp.net的驗證框架。例如當你點擊一個名爲SumbitButton

protected void myCustomValidator_ServerValidate(object source, ServerValidateEventArgs e) 
{ 
    // determine validity for this custom validator 
    e.IsValid = DropdownValueInRange(myAjaxDropDown.SelectedItem.Value); 
} 

protected void SubmitButton_Click(object source, EventArgs e) 
{ 
    Validate(); 
    if(!IsValid) 
     return; 

    // validators pass. Continue processing. 
} 

進一步閱讀的一些鏈接按鈕:

0

即使在下拉列表中,爲什麼不驗證onChange?

只需添加腳本管理器和屬性添加到平變化在Page_Load事件

 
' Creating the javascript function to validate 
Dim js As String 
js = "function validateDDL1(ddl) { alert(ddl.value); }" 

' Adding onChange javascript method 
DropDownList1.Attributes.Add("onchange", "validateDDL1(this);") 

' Registering the javascript 
ScriptManager.RegisterClientScriptBlock(Me, GetType(String), "validateDDL1(ddl)", js, True) 
1

您可以從您的JavaScript代碼調用Page_Validate()函數,它會觸發對的asp.net驗證頁面,它基本上類似於服務器代碼中的Page.Validate()