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

时间:2014-06-13 18:11:00

标签: c# asp.net formview

我尝试使用FormView并希望验证服务器端的某些数据。我尝试使用该属性EnableModelValidation,但MSDN对此非常不完整。

saw an aproach但关于动态数据,而不仅仅是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,因为我找不到关于它的官方文档。

1 个答案:

答案 0 :(得分:1)

除非您使用FormView的DynamicData版本,否则启用该属性不会执行任何操作请参阅this以获得有关使用ASP.NET动态数据脚手架以及一些有用链接的更好说明