ASP.NET 页面验证

ASP.NET Page Validation

提问人:Ty. 提问时间:10/16/2008 最后编辑:CommunityTy. 更新时间:10/16/2008 访问量:2302

问:

相关文章

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

asp.net ajax 验证

评论


答:

0赞 balexandre 10/16/2008 #1

为什么不在下拉列表中验证 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)
1赞 bashmohandes 10/16/2008 #2

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

3赞 Robert Paulson #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" />

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

一些进一步阅读的链接: