我决定使用 ASP.NET Validator 来验证我的 WebForm 的几十个输入。它在客户端方面正常工作。我的意思是,我完全可以在没有“发布回页”等的情况下验证输入。
但是当我尝试在代码上使用Validator时,它会给我Page.Isvalid
属性,并且我对它的可靠性感到困惑。以下是我自己无法回答的问题:
以下是我在服务器端验证输入的代码:
foreach (IValidator iValidator in Page.Validators)
{
if (!iValidator.IsValid) { return false; }
}
但是,它是否独立于.aspx和.js?我可以在服务器端依赖它吗?
答案 0 :(得分:2)
您应该始终在服务器端验证,这主要是通过调用Page.Validate
自动完成的。
来自MSDN:
当用户单击任何ASP.NET服务器控件时,将调用此方法 将 CausesValidation 属性设置为true,即 默认。这些包括Button,ImageButton和LinkButton Web 服务器控件,HtmlInputButton,HtmlInputImage和HtmlButton HTML服务器控件和可以自动回发的控件 服务器,如TextBox,CheckBox,ListControl和 BulletedList控件。
如果您想强制验证其他ValidationGroup
,可以手动调用它:
Page.Validate("MyValidationGroup");
If(Page.IsValid)
{
// ...
}
请注意,只有在调用Page.IsValid
方法后才能检查Page.Validate
,或者在ASP的CausesValidation
事件处理程序中将OnServerClick
属性设置为true。启动表单处理的.NET服务器控件。