zoukankan      html  css  js  c++  java
  • ASP.NET MVC3 Use Remote Validation

         ASP.Net MVC3提供了一种Remote Server Call机制,可以用来校验Form中某字段的合法性,而不用提交整个Form到服务器。当有一个字段不能使用客户端校验,而且提交到服务器后有可能会校验失败的时候,就可以采用远程服务器调用机制。例如:某些网站需要用户注册一个唯一的用户名。

    下面实现一个简单的使用Remote Server Call机制验证用户名是否重复的实例

    1、创建空MVC3项目,命名为MvcRemoteValidation

    2、资源管理器,Models文件夹,右键,添加类,命名为User

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.ComponentModel.DataAnnotations;
    namespace MvcRemoteValidation.Models
    {
    public class User
    {
    [Required(ErrorMessage="姓名不能为空")]
    public string Name { get; set; }
    }
    }

    3、资源管理器中,右键Controllers,添加一个Controller,命名为HomeController,如下图所示:

    image

    4、 HomeController中增加Action方法 IsUnique_Available(string name),校验是否已经存在name,代码如下:

     public JsonResult IsUnique_Available(string name)
    {
    List<User> users = UserService.GetUsers();
    users = users.Where(u => u.Name == name).ToList();
    if (users.Count == 0)
    return Json(true, JsonRequestBehavior.AllowGet);
    string suggestedUID = String.Format(CultureInfo.InvariantCulture,
    "{0} 已经存在。", name);
    return Json(suggestedUID, JsonRequestBehavior.AllowGet);
    }

    备注:此Action方法可以放在任何Controller中 ,没有限制。 

    5、类User的Name属性增加attribute

    public class User
    {
    [Required(ErrorMessage="姓名不能为空")]
    [Remote("IsUnique_Available", "Home")]
    public string Name { get; set; }
    }

    指定了Name的Remote 属性,并指定了执行此验证所需要调用的Action方法,以及此Action所在的Controller 

    5、按F5运行

     

    Index页面如下:

    image

    已经存在Tom和Marry两个用户名。

     

    6、点击Create New链接,打开新增窗口:

    image

    查看Html源文件,Input自动增加了data-val-remote-additionalfields=”*.Name”和data-val-remote-url=”/Home/IsUnique_Available”属性,”/Home/IsUnique_Available”就是在User类中为Name属性添加的Remote所指定的Controller和Action。

    image

    7、输入框中,输入Tom,则会出现提示:Tom已经存在。

    image

    8、源码链接:MvcRemoteValidation.rar

  • 相关阅读:
    .net2.0播放WAV文件
    WEB打印:目前的几种方式及我们的任务[转]
    ASP.NET MVC Framework CTP版本将于今年年底放出[转CSDN]
    最安全的写日志方法
    学习Asp.net最有价值的网站
    【资源共享】《DDR常见问题简单排查》
    【资源共享】《Camera_for_RockChipSDK参考说明_v4.1》下载
    资源共享——《嵌入式Linux应用开发完全手册》韦东山 PDF电子档下载
    FireflyRK3288开发板Android编译环境搭建开荒
    【资源下载】分享个嵌入式开发的入门教程(包含视频)
  • 原文地址:https://www.cnblogs.com/kinglau/p/2099095.html
Copyright © 2011-2022 走看看