3.表单数据的服务器端验证
将数据验证任务从服务器端迁移到客户端的过程促使了JavaScript的产生,这也是我们沿用至今的一种方式。但只有在保证客户端JavaScript正常运行的前提下,这种方式才能发挥其作用。不幸的是,总有一些例外,比如浏览器不支持JavaScript,或者用户刻意关闭了浏览器的JavaScript功能,这就导致了第一重防护失效。比较保险的做法是加入第二重防护,即对用户提交的数据进行服务器端验证,但这无疑将增加开发者的工作量。
ASP.NET 2.0提供了一系列表单数据验证控件,可以非常轻松的完成客户端及服务器端的双重数据验证任务。但要使服务器端验证功能发挥作用,还需要用到Page.IsValid属性,请看下面的例子:
<form id="MyForm" runat="server">
<div>
姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtName" ErrorMessage="请填写姓名!" Display="Dynamic" runat="server"></asp:RequiredFieldValidator>
</div>
<div>
<asp:Button ID="btnSubmit" Text="提交" runat="server" />
</div>
</form>
<div>
姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtName" ErrorMessage="请填写姓名!" Display="Dynamic" runat="server"></asp:RequiredFieldValidator>
</div>
<div>
<asp:Button ID="btnSubmit" Text="提交" runat="server" />
</div>
</form>
这是一个HTML片段,其中有一个RequiredFieldValidator控件用于检查是否已填写姓名。下面是点击按钮时执行的服务器端代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid) //注意:不要遗漏对Page.IsValid属性的判断
{
Response.Write("你的名字是:" + txtName.Text);
}
}
{
if (Page.IsValid) //注意:不要遗漏对Page.IsValid属性的判断
{
Response.Write("你的名字是:" + txtName.Text);
}
}
其中,要特别注意对Page.IsValid属性的判断,只有页面中所有验证控件对数据的验证都成功时,Page.IsValid属性才为True,这代表提交的数据为有效数据,可以进入下一步操作。