ASP.NET GridView - 如何以声明方式启用验证

时间:2010-05-16 16:59:23

标签: asp.net validation gridview

可以纯粹以声明方式在ASP.NET GridView中启用验证吗?

我尝试了什么:

  • 使用SelectMethod和UpdateMethod定义绑定到ObjectDataSource的GridView

  • GridView包含一些ReadOnly BoundField列和一个TemplateField,其EditTemplate包含一个TextBox和一个RegularExpressionValidator,它只允许在TextBox中输入数字。

  • GridView还包含一个带有ShowEditButton = true和CausesValidation = true的CommandField。

如果单击编辑,输入无效值,然后单击保存,有一个PostBack,并且服务器中抛出异常(输入字符串的格式不正确)。

我当然可以通过向服务器上的RowUpdating事件处理程序添加验证代码来避免这种情况(参见下文),但是有没有任何声明性方法可以在不添加此代码的情况下强制执行验证?

protected void MyGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    Page.Validate("MyValidationGroup");
    if (!Page.IsValid)
    {
        e.Cancel = true;
    }
}

1 个答案:

答案 0 :(得分:0)

您需要该代码。

“除了依赖客户端验证之外,在处理回发事件时调用Page.IsValid也很重要。”

http://weblogs.asp.net/rajbk/archive/2007/03/15/page-isvalid-and-validate.aspx

更新

为避免样板代码,您可以让所有页面都从基类继承,并且所有用户控件都从不同的基类继承。基类将具有通用逻辑(如上所述)。然后,您必须手动连接或遍历控制树并自动连接事件。

我个人会坚持你现在拥有的东西。