我尝试使用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
,因为我找不到关于它的官方文档。
答案 0 :(得分:1)
除非您使用FormView的DynamicData版本,否则启用该属性不会执行任何操作请参阅this以获得有关使用ASP.NET动态数据脚手架以及一些有用链接的更好说明