ASP.NET页面验证

时间:2008-10-15 18:59:50

标签: asp.net ajax validation

Related Article

与上述文章类似的主题,但更具体的说明。您如何处理视图状态中的项目(因此它们包含在提交中),但也可以通过AJAX进行更改。例如,假设我们有一个通过AJAX Web服务调用(而不是更新面板)填充的下拉列表。如果下拉列表的项目已更改,如何让页面验证?

3 个答案:

答案 0 :(得分:3)

你没有验证下拉列表吗?您正在验证用户选择的值。它与其他帖子几乎是相同的建议,因为javascript或其他工具可以改变html或创建自己的POST,你必须始终在服务器端验证。假设所有客户端请求都可以被篡改,并假设没有发生客户端验证。


如果您使用的是网络表单模型....

如果您只想检查在下拉列表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" />

两者都插入到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.
}

进一步阅读的一些链接:

答案 1 :(得分:1)

你可以从你的javascript代码调用Page_Validate()函数,它会触发页面上的asp.net验证器,它基本上类似于服务器代码中的Page.Validate()

答案 2 :(得分:0)

为什么即使在下拉列表中也不验证onChange?

只需添加脚本管理器并将该属性添加到Page_Load事件

中的onchange
' 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)