189 8069 5689

MVC3----数据注解与验证(2)之详解Remote验证与Compare验证

***************************************************Remote验证

成都创新互联拥有网站维护技术和项目管理团队,建立的售前、实施和售后服务体系,为客户提供定制化的成都网站设计、网站制作、外贸营销网站建设、网站维护、绵阳主机托管解决方案。为客户网站安全和日常运维提供整体管家式外包优质服务。我们的网站维护服务覆盖集团企业、上市公司、外企网站、购物商城网站建设、政府网站等各类型客户群体,为全球千余家企业提供全方位网站维护、服务器维护解决方案。

概要:

        如果要实现像用户注册那样,不允许出现重复的账户,就可以用到Remote验证。Remote特性允许利用服务器端的回调函数执行客户端的验证逻辑。它只是在文本框中输入字符的时候向服务器提交get请求,Remote验证只支持输入的时候验证,不支持提交的时候验证,这存在一定的安全隐患。所以我们要在提交的时候也要验证,验证失败了,就添加上ModelError

MVC3----数据注解与验证(2)之 详解Remote验证与Compare验证

 

实现:

-------模型代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;//需要的命名空间
namespace SchoolManageDomw.Models
{
    public class SchoolType
    {
        [Key]
        public virtual int st_id { get; set; }
        //       要调用的方法            控制器名称
        [Remote("CheckUserName", "SchoolType")]//Remote验证
        public virtual string st_name{get;set;}
        
        public virtual List Schools { get; set; }
    }
}

 

-------控制器代码:

需要的名称控件:

using System.Web.Security;
using System.Web.UI;

       private SchoolDBContext db = new SchoolDBContext();
        /// 
        /// 定义一个方法,做唯一判断
        /// 
        /// 
        /// 
        private bool IsDistinctStName(string st_name)
        {
            if (db.SchoolTypes.Where(r => r.st_name == st_name).ToList().Count > 0)
                return true;
            else
                return false;
        } 
        
        /// 
        /// 被调用的方法
        /// 
        /// 
        /// 
        [OutputCache(Location = OutputCacheLocation.None, NoStore = true)]//加上清除缓存
        public JsonResult CheckUserName(string st_name)
        {
            if (IsDistinctStName(st_name))
            {
                return Json("用户名不唯一", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }
        }
        
        
        [HttpPost]
        public ActionResult Create(SchoolType schooltype)
        {
            //提交到服务器做一次判断
            if (IsDistinctStName(schooltype.st_name))
            {
                ModelState.AddModelError("st_name", "用户名称不是唯一的");
            }
            if (ModelState.IsValid)
            {
                db.SchoolTypes.Add(schooltype);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }
            return View(schooltype);
        }

 -----视图代码:

@model SchoolManageDomw.Models.SchoolType
@{
    ViewBag.Title = "Create";
}

Create

@using (Html.BeginForm()) {     @Html.ValidationSummary(true)     
        SchoolType                      @Html.LabelFor(model => model.st_name)         
                     @Html.EditorFor(model => model.st_name)             @Html.ValidationMessageFor(model => model.st_name)         
        

                     

     }
    @Html.ActionLink("Back to List", "Index")

 

***************************************************Compare验证

概要:

        如果需要比较验证,比如密码是否输入一致等,就可以用Compare验证

MVC3----数据注解与验证(2)之 详解Remote验证与Compare验证

 

实现:

 

-----模型代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace SchoolManageDomw.Models
{
    public class SchoolType
    {
        [Key]
        public virtual int st_id { get; set; }
        [Required]  //不许为空
        public virtual string st_name{get;set;}
        [Compare("st_name")]
        public virtual string st_nameConfirm { get; set; }

        public virtual List Schools { get; set; }

    }
}

 

-----视图代码:

@model SchoolManageDomw.Models.SchoolType
@{
    ViewBag.Title = "Create";
}

Create

@using (Html.BeginForm()) {     @Html.ValidationSummary(true)     
        SchoolType                      @Html.LabelFor(model => model.st_name)         
                     @Html.EditorFor(model => model.st_name)             @Html.ValidationMessageFor(model => model.st_name)                                @Html.LabelFor(model => model.st_nameConfirm)                               @Html.EditorFor(model => model.st_nameConfirm)             @Html.ValidationMessageFor(model => model.st_nameConfirm)                  

                     

     }
    @Html.ActionLink("Back to List", "Index")

 


本文名称:MVC3----数据注解与验证(2)之详解Remote验证与Compare验证
网站路径:http://cdxtjz.cn/article/jodhps.html

联系我们

您好HELLO!
感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
  • 电话:028- 86922220 18980695689
  • 商务合作邮箱:631063699@qq.com
  • 合作QQ: 532337155
  • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

小谭建站工作室

成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

小谭观点

相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。