【问题标题】:ASP.NET GridView - how to enable validation declarativelyASP.NET GridView - 如何以声明方式启用验证
【发布时间】:2011-02-20 03:19:09
【问题描述】:

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

我尝试过的:

  • 绑定到 ObjectDataSource 的 GridView 并定义了 SelectMethod 和 UpdateMethod

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

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

如果我点击Edit,输入一个无效值,然后点击Save,有一个PostBack,服务器抛出异常(输入字符串格式不正确)。

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

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

【问题讨论】:

    标签: asp.net validation gridview


    【解决方案1】:

    您需要该代码。

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

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

    更新

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

    我个人会坚持你目前拥有的。

    【讨论】:

    • 我知道服务器端验证是必要的,我的问题是它是否可以以声明方式启用。我正在尝试减少需要添加的相同样板代码的数量。但是我怀疑你是对的:GridView 和类似的类没有“ValidationGroup”属性,没有这个他们就不会知道需要验证什么。
    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2011-05-04
    • 2019-06-09
    相关资源
    最近更新 更多