• 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

  • 相关阅读:
    如果再回到从前 备忘录模式
    在NBA我需要翻译 适配器模式
    无尽加班何时休 状态模式
    Linux网络编程学习(六) ----- 管道(第四章)
    Linux网络编程学习(五) ----- 信号(第四章)
    Linux网络编程学习(四) -----守护进程的建立(第三章)
    Linux网络编程学习(三) ----- 进程控制实例(第三章)
    Linux网络编程学习(二) ----- 进程控制(第三章)
    Linux网络编程学习(一) ----- 概论和Linux模型(第一章第二章)
    Linux网络编程学习计划
  • 原文地址:https://www.cnblogs.com/kinglau/p/2099095.html
Copyright © 2020-2023  润新知