在 ASP.NET 网页上,我有一个 EntityDataSource:
<asp:EntityDataSource ID="EntityDataSourceOrders" runat="server"
ConnectionString="name=EntitiesContext"
DefaultContainerName="EntitiesContext"
EntitySetName="Order"
Select="it.OrderID,it.OrderCode,it.OrderDateTime"
Where="it.OrderDateTime >= @DateTimeFrom AND it.OrderDateTime <= @DateTimeTo"
OrderBy="it.SOrderCode"
StoreOriginalValuesInViewState="False" >
<WhereParameters>
<asp:ControlParameter Name="DateTimeFrom"
ControlID="TextBoxDateTimeFrom"
DbType="DateTime"
PropertyName="Text" />
<asp:ControlParameter Name="DateTimeTo"
ControlID="TextBoxDateTimeTo"
DbType="DateTime"
PropertyName="Text" />
</WhereParameters>
</asp:EntityDataSource>
如您所见,页面上有两个文本框可以输入我选择的最早和最晚日期。这些文本框在 EntityDataSource 的 Where 子句中用作 ControlParameters。
现在想象有人在其中一个 ControlParameter 文本框中输入了一个无效日期,例如“32/01/2010”。
我知道我可以首先在客户端进行验证(使用 ASP.NET 验证器),因此如果输入无效,我会阻止回发。
但是如何在服务器端实现更重要的“最终”验证?特别是我在哪里(哪个方法或事件)实现它以防止 EntityDataSource 在文本框中使用无效的 DateTime 值执行查询?
基本上我的想法是调用类似Page.Validate()
然后的东西Page.IsValid
,如果 IsValid 返回 false,则“取消”EntityDataSource 查询执行(或完全阻止它启动)。但我不知道我可以在何处或在哪个事件中连接到 EntityDataSource 以防止查询执行。
也许我在思考错误的方向。有人知道该怎么做吗?
提前感谢您的帮助!