技术开发 频道

MVC框架开发Web论坛之表单校验篇

  【IT168 技术文档】熟悉ASP.NET的朋友都知道,ASP.NET框架中针对表单中常用控件引入了一套完整的并支持可定制的校验组件。然而,在目前最新版本的ASP.NET MVC框架中却仍然没有引入对于表单控件相关的校验组件的内置支持。但是另一方面,针对Web页面表单中典型的输入控件实施必要的校验在今天网络安全第一位的形势下显得尤其重要和必要。在本篇中,我们将探讨如何在构建ASP.NET MVC论坛应用程序的过程中把服务器端表单校验功能添加到程序中。

  一、 创建表单校验框架

  因为ASP.NET MVC框架并没有为表单控件校验提供内置的支持;所以,如果你想实现在把数据提交到一个数据库之前校验表单数据,那么你必须你自己动手编写校验逻辑。在这一节,我将描述一下如何创建一个定制的表单校验框架。

  注意,我在这一节中将要描述的校验框架的设计中整合了ASP.NET MVC框架Preview 5中新引入的ViewData.ModelState属性,从而使相应的校验操作显得更加平滑。

  这个校验框架的设计充分利用了C#语言属性(Attribute)语法的优点。你可以使用Validator系列属性来修饰你想校验的属性。具体地说,该校验框架包括了下列属性:

     RequiredValidator—当一个属性没有一个值时,使用这个属性可以显示一个校验错误消息。
? TypeValidator—当一个属性类型不正确时,使用这个属性显示一个校验错误消息。
? RegularExpressionValidator—当一个属性不匹配一个指定的正规表达式时,使用这个属性显示一个校验错误消息。
? LengthValidator—当一个属性的值太长时,使用这个属性显示一个校验错误消息。
? EmailValidator—当一个属性所描述的是一个无效的电子邮件地址时,使用这个属性显示一个校验错误消息。
? USCurrencyValidator—当一个属性所描述的是一个无效的美国货币数值时,使用这个属性显示一个校验错误消息。

  下面,让我们来看一个如何使用这些属性的例子。设想你正在创建一个产品目录应用程序,并且你想对表单进行校验,以便你能够正确地输入产品信息。
 
  接下来的列表1展示了上面创建一个新产品的视图相应的页面实现代码。
列表1—Views\Home\Create.aspx

…………
<head runat="server">
    
<title>Create New Product</title>
    
<style type="text/css">
    
    .input-validation-error
    
{
        border
: solid 2px red;
    
}
    
</style>
</head>
<body>
    
<div>
    
    
<form method="post" action="/Home/Create">
    
    
<label for="name">Product Name:</label>
    
<br />
    
<%= Html.TextBox("name") %>
    
<%= Html.ValidationMessage("name") %>
    
    
<br /><br />
    
<label for="price">Product Price:</label>
    
<br />
    
<%= Html.TextBox("price") %>
    
<%= Html.ValidationMessage("price") %>

    
<br /><br />
    
<label for="description">Product Description:</label>
    
<br />
    
<%= Html.TextArea("description") %>
    
<%= Html.ValidationMessage("description") %>

    
<br /><br />
    
<label for="saleStartDate">Sale Start Date:</label>
    
<br />
    
<%= Html.TextBox("saleStartDate") %>
    
<%= Html.ValidationMessage("saleStartDate") %>

    
<br /><br />
    
<label for="saleEndDate">Sale End Date:</label>
    
<br />
    
<%= Html.TextBox("saleEndDate") %>
    
<%= Html.ValidationMessage("saleEndDate") %>

    
<br /><br />
    
<input type="submit" value="Add Product" />
    
    
</form>
    
    
</div>
</body>
</html>

  关于列表1中的视图有两点你应该特别注意。首先注意的是,每一个输入域都与一个Html.ValidationMessage()辅助函数相关联。这个辅助函数包括已经内置于目前最新版本(Preview 5)的ASP.NET MVC框架中,它用于显示一个校验错误消息。

  其次请注意,视图中包括了一个层叠样式表,它定义了一个名字为input-validation-errorCSSr CSS类。当Html.TextBox()辅助函数生成一个含有无效值的输入域时,这个CSS类被自动地添加到该输入域。在列表1中的视图中,校验发生错误的输入域都使用一个红色方框框出。

 

0
相关文章