技术开发 频道

为视图自定义辅助方法(上)

 【IT168技术文档】

转载自Jeff Zhao的博客

    在编写ASP.NET MVC应用程序时,只依赖内置的视图辅助方法很难达到很高的生产力,即使是定义在MvcFutures中的补充类库,也很难满足项目的具体需求。此外,不同的项目有不同的特点,在很多时候也需要定义较为特殊的辅助方法,使开发人员能够更快,更方便地写出更容易维护的代码。这也是自定义视图辅助方法最主要的目的(没有之一)。而这次的文章,便是给出一个这方面的示例,可作为此类问题的一个参考。

 预备

 在编写客户端HTML时,进行客户端验证是最常见的工作之一。既然ASP.NET MVC集成了jQuery类库,那么我们不妨基于jQuery的Validate插件编写这部分功能。假设有如下表单:

<form method="post" action="" id="form">

 <p>

 <span>Name: </span> <!-- 必填 -->

 <input type="text" name="user.Name" />

 </p>

 <p>

 <span>Age: </span> <!-- 必填,15到28之间的数字 -->

 <input type="text" name="user.Age" />

 </p>

 <p>

 <span>Email:</span> <!-- 必填,且为合法Email -->

 <input type="text" name="user.Email" />

 </p>

 <input type="submit" value="Submit" />

 </form>

 如果使用JQuery Validate插件进行客户端校验,那么我们可以编写如下代码:

 <script language="javascript" type="text/javascript">

 $("#form").validate({

 "rules": {

 "user.Name": { "required": true },

 "user.Age": {

 "required": true,

 "number": true,

 "range": [15, 28]

 },

 "user.Email": {

 "required": true,

 "email": true

 }

 },

 "messages": {

 "user.Name": { "required": "please provide your name!!!" },

 "user.Email": {

 "required": "email please...",

 "email": "valid email please..."

 }

 }, "onkeyup": false

 });

 </script>

 以上这段脚本的作用便是告诉jQuery校验哪个表单,对表单中的各个元素分别采取哪种校验方式,以及在发生错误的时候该提示什么信息(详细内容可查阅文档)。这里可能需要补充一段题外话。实际上jQuery.Validate非常灵活,可以有各种方式提供校验信息,例如直接为html元素加特殊标记。不过老赵认为那些方法的trick意味太浓,且不容易编写辅助方法协助开发,因此刻意忽略那些方式。

 这样的结果可能会招一些前台开发人员欢喜,不过老赵觉得,至少有三个地方需要提高:

 数据分散,提高维护难度。例如HTML元素和校验规则分离,校验规则

 对于开发人员来说,编写JSON较不方便,容易发生错误。

 缺少对于“自动校验”的支持,需要完全手写。

 而我们编写的辅助方法,主要就是面向前两点,而最后一点可以说是自然而然的事情。

0
相关文章