如何在使用EnableModelValidation时验证FormView数据

本文关键字:验证 FormView 数据 EnableModelValidation | 更新日期: 2023-09-27 18:08:37

我试图使用FormView,并希望在服务器端验证一些数据。我试图使用属性EnableModelValidation,但MSDN非常不完整。

我看到了一种方法(,但关于动态数据,而不仅仅是ObjectDataSource),你抛出一个ValidationException,它会处理,如果你有一个ValidationSummary。不幸的是,它崩溃了,黄色的错误页,而不是显示摘要。

下面是我的类:

namespace FormViewTest
{
    [DataObject]
    public class Person
    {
        private int age;
        [DataObjectField(false)]
        public int Age
        {
            get { return age; }
            set
            {
                if (value < 0)
                {
                    throw new ValidationException("Invalid age");
                }
                age = value;
            }
        }
        public void Insert(Person p)
        { }
        public Person Get()
        {
            return new Person();
        }
    }
}

和aspx:

<asp:FormView runat="server"
    DataSourceID="ObjectDataSource1"
    DefaultMode="Insert"
    EnableModelValidation="true">
    <InsertItemTemplate>
        Age:
        <asp:TextBox ID="AgeTextBox" runat="server"
            Text='<%# Bind("Age") %>' />
        <br />
        <asp:LinkButton ID="InsertButton" runat="server"
            CommandName="Insert"
            Text="Insert" />
    </InsertItemTemplate>
</asp:FormView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    DataObjectTypeName="FormViewTest.Person"
    InsertMethod="Insert" SelectMethod="Get"
    TypeName="FormViewTest.Person"></asp:ObjectDataSource>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />

我试着像我提到的文章中所说的那样添加其他控件,但它什么也没做:

<asp:DynamicValidator ErrorMessage="Error" runat="server"
    ControlToValidate="ObjectDataSource1"  />

我希望有人能帮助我使用这个EnableModelValidation,因为我找不到关于它的官方文档。

如何在使用EnableModelValidation时验证FormView数据

启用该属性不会做任何事情,除非你正在使用动态数据版本的FormView见this关于使用ASP的更好解释。. NET动态数据脚手架以及一些有用的链接