ASP.NET MVC3 RemoteAttribute远程属性验证教程_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > ASP.NET MVC3 RemoteAttribute远程属性验证教程

ASP.NET MVC3 RemoteAttribute远程属性验证教程

 2013/7/19 20:58:01  蒋叶湖  博客园  我要评论(0)
  • 摘要:今天为大伙介绍:ASP.NETMVC3RemoteAttribute远程属性验证的相关内容。对于:MVC3RemoteAttribute,是项新内容,话称为:MVCModel远程验证。下面看下相关介绍:Model验证的新特性(主要是从RemoteAttribute特性和IClientValidatable这两个新东西进行了解和尝试使用)Razor视图引擎的使用(主要是和原来的aspx区别开来)控制器中的新特性(早在MVC3.0的测试版本中就已经提到的“动态类型”
  • 标签:.net ASP.NET MVC net 教程 远程

今天为大伙介绍:ASP.NET MVC3 RemoteAttribute远程属性验证的相关内容。

对于:MVC3 RemoteAttribute,是项新内容,话称为:MVC Model远程验证

下面看下相关介绍:

 

  1. Model验证的新特性(主要是从RemoteAttribute特性和IClientValidatable这两个新东西进行了解和尝试使用)
  2. Razor视图引擎的使用(主要是和原来的aspx区别开来)
  3. 控制器中的新特性(早在MVC3.0的测试版本中就已经提到的“动态类型”,还有其他新特性)
  4. 对HtmlHelper对象的进一步扩展(Chart和GridView的整合)
    很明显,上面提到的前三点其实就是所谓的M-V-C了- -!。    下面讲的是Model远程验证新特性的使用:

MVC RemoteAttribute——远程验证特性,主要有三个方面要注意,还是M-V-C:
Model:RemoteAttribute的使用和其他验证特性(例如RequiredAttribute)相似,直接戴在Model属性的头上就OK鸟,考虑下面这个Model 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class="c# color1" style="background-image: none !important; position: static !important; text-align: left !important; overflow-x: visible !important; overflow-y: visible !important; margin: 0px; outline-width: 0px !important; width: auto !important; bottom: auto !important; font: 1em/1.1em monospace; float: none !important; height: auto !important; color: gray !important; vertical-align: baseline !important; top: auto !important; right: auto !important; left: auto !important; background-origin: initial; background-clip: initial; border-top-left-radius: 0px 0px; border-top-right-radius: 0px 0px; border-bottom-right-radius: 0px 0px; border-bottom-left-radius: 0px 0px; border: 0px; padding: 0px !important;">/// <summary> /// 用户添加操作的模型 /// </summary> publicclassMyUser_AddModel {     #region MyRegion     /// <summary>     /// 用户名     /// </summary>     [DisplayName("登录账号")]     [Required(ErrorMessage = "用户账号不能为空")]     [Remote("CheckUserAccountExists", "Test", ErrorMessage = "用户账号已存在")] // 远程验证(Ajax)     publicstringUserAccount { get; set; } }

 

    从上面的代码可以看到UserAccount属性上面有一个Remote特性,这个就是用于远程验证用的了,三个参数,第一个是控制器名,第二个是Action名,最后那个是验证不通过的提示文本(查看RemoteAttribute的元数据代码可以发现其实还有一个重要的参数,最完全的构造函数如下:public RemoteAttribute(string action, string controller, string areaName); 可以看到还可以指示到某个Area的。

Control:根据上面的代码我们需要在名为”Test“的控制器中提供一个名个”CheckUserAccountExists“的Action方法,如下: 1 2 3 4 5 6 7 [HttpGet] // 只能用GET !!! publicActionResult CheckUserAccountExists(stringUserAccount) {     string[] existsUsers = { "youguanbumen", "wodanwojun"};     boolexists = string.IsNullOrEmpty(existsUsers.FirstOrDefault(u => u.ToLower() == UserAccount.ToLower())) == false;     returnJson(!exists, JsonRequestBehavior.AllowGet); }

 

    这里有亮点要注意,Action必须是Get提交(Post的话无效),返回的结果是JsonResult(不是直接返回bool值)。

View:视图使用了Razor引擎,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @model MvcApplication.Models.MyUser_AddModel <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> <fieldset>     <legend>添加用户</legend>     <div>         @using(Html.BeginForm("DoAddUser","Test")){         <p>             @Html.LabelFor(m=>m.UserAccount):             @Html.TextBoxFor(m=>m.UserAccount)             @Html.ValidationMessageFor(m=>m.UserAccount)         </p>         <p>             <input type="submit" value="提 交" />         </p>         }     </div> </fieldset>

 

    这里注意的地方有,页面声明页面为强类型(就是上面定义的Model),引入三个必须的脚本创建MVC3.0项目的时候自带的),使用了HtmlHelper的”*For“泛型方法。除了jquery.validate.unobtrusive.min.js这个脚本,其他的都是不是3.0中新加的东西。

发表评论
用户名: 匿名