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

ASP.NET GridView-如何以声明方式启用验证,asp.net,validation,gridview,Asp.net,Validation,Gridview,是否可以在ASP.NET GridView中纯粹以声明方式启用验证 我所尝试的: 绑定到已定义SelectMethod和UpdateMethod的ObjectDataSource的GridView GridView包含一些只读BoundField列和TemplateField,TemplateField的EditTemplate包含一个TextBox和一个RegularExpressionValidator,后者只允许在TextBox中输入数字 GridView还包含一个CommandField

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

我所尝试的:

绑定到已定义SelectMethod和UpdateMethod的ObjectDataSource的GridView

GridView包含一些只读BoundField列和TemplateField,TemplateField的EditTemplate包含一个TextBox和一个RegularExpressionValidator,后者只允许在TextBox中输入数字

GridView还包含一个CommandField,其中ShowEditButton=true和CausesValidation=true

如果我单击Edit,输入一个无效值,然后单击Save,就会出现回发,并且服务器输入字符串的格式不正确时会引发异常

当然,我可以通过向服务器上的RowUpdating事件处理程序添加验证代码来避免这种情况,请参见下面的内容,但是是否有任何声明性方法可以强制在不添加此代码的情况下完成验证

protected void MyGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    Page.Validate("MyValidationGroup");
    if (!Page.IsValid)
    {
        e.Cancel = true;
    }
}
你需要那个密码

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

更新

为了避免锅炉板代码,可以让所有页面从基类继承,所有用户控件从不同的基类继承。基类将具有与上面相同的公共逻辑。然后,您必须手动将其连接起来,或者遍历控制树并自动将事件连接起来


我个人会坚持您目前的做法。

我知道服务器端验证是必要的,我的问题是它是否可以以声明方式启用。我试图减少需要添加的相同样板代码的数量。但是我怀疑你是对的:GridView和类似的类没有ValidationGroup属性,没有这个属性,他们就不知道需要验证什么。