最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET MVC5驗(yàn)證系列之Remote Validation

 更新時(shí)間:2016年07月28日 14:49:23   作者:灰太狼的夢(mèng)想  
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5驗(yàn)證系列之Remote Validation,感興趣的小伙伴們可以參考一下

大多數(shù)的開發(fā)者,可能會(huì)遇到這樣的情況:當(dāng)我們?cè)趧?chuàng)建用戶之前,有必要去檢查是否數(shù)據(jù)庫(kù)中已經(jīng)存在相同名字的用戶。換句話說就是,我們要確保程序中,只有一個(gè)唯一的用戶名,不能有重復(fù)的。相信大多數(shù)人都有不同的解決方法,但是ASP.NET MVC中,為我們提供了一個(gè)特性,就是Remote Validation,用它可以解決類似這樣的問題。

Remote Validation調(diào)用了一個(gè)Ajax請(qǐng)求,可以是GET或者POST方式,接著調(diào)用方法,這個(gè)方法,至少要有一個(gè)參數(shù),并且方法的返回類型是Json格式的。【MVC中通過JSOnResult來做到】,這個(gè)方法的參數(shù)就是要驗(yàn)證的實(shí)體的屬性【必須,否則不能驗(yàn)證,參數(shù)的大小寫無所謂?!?,如果這個(gè)驗(yàn)證的方法返回值是true,那么就表名存在相同的用戶,我們就返回false,給前臺(tái)頁(yè)面。表明驗(yàn)證不通過。

好了,直接說正題吧!
首先新建一個(gè)空白的MVC項(xiàng)目,在Model文件夾下,新建一個(gè)類RemoteUser: 

public class RemoteUser
 { 
 public string Name { get; set; } 
 public string Email { get; set; }
 
 }

然后建一個(gè)測(cè)試的數(shù)據(jù)類: 

 public static class MyRemoteStaticData
 {
 public static List<RemoteUser> RemoteList
 {
 get
 {
 return new List<RemoteUser>()
 {
 new RemoteUser(){Name="Daniel",Email="Daniel@163.com"},
 new RemoteUser(){Name="CFS",Email="CFS@163.com"}
 };
 }

 }
 }

 

在新建一個(gè)控制器MyRemoteController 【主要用來Remote驗(yàn)證】:

using Server_Side_Validation_IN_MVC.StaticData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Server_Side_Validation_IN_MVC.Controllers
{
 public class MyRemoteController : Controller
 {
 // GET: MyRemote
 public JsonResult RemoteValidate(string name) //這里的參數(shù)名字,必須要和視圖中文本框控件的名字一樣,但大小寫無所謂
 {
 //如果存在用戶名,即isExists=true
 bool isExists = MyRemoteStaticData.RemoteList.
 Where(s => s.Name.ToLowerInvariant().
  Equals(name.ToLower())).FirstOrDefault() != null;
 //就向前臺(tái)返回false,表明已經(jīng)存在userName
 return Json(!isExists,JsonRequestBehavior.AllowGet);
 }

 

 
}

上面添加完驗(yàn)證之后,我們來修改一下Model實(shí)體:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Server_Side_Validation_IN_MVC.Models
{
 public class RemoteUser
 {
 [Remote("RemoteValidate", "MyRemote", ErrorMessage = "抱歉用戶名已經(jīng)存在!請(qǐng)重新輸入?。。?)]
 public string Name { get; set; }

 
 public string Email { get; set; }

 
 }
}

然后在新建一個(gè)測(cè)試的控制器: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Server_Side_Validation_IN_MVC.Controllers
{
 public class UserController : Controller
 {
 

 public ActionResult AddRemoteUser()
 {
 return View();
 }
 }
}

添加AddRemoteUser視圖,【注意這里,Remote Validation是需要引入Jquery插件和啟用客戶端驗(yàn)證的】

這里勾選引入腳本庫(kù),也主要是用來引入Jquery插件。 

@model Server_Side_Validation_IN_MVC.Models.RemoteUser

@{
 ViewBag.Title = "AddRemoteUser";
}

<h2>AddRemoteUser</h2>


@using (Html.BeginForm()) 
{
 @Html.AntiForgeryToken()
 
 <div class="form-horizontal">
 <h4>RemoteUser</h4>
 <hr />
 @Html.ValidationSummary(true, "", new { @class = "text-danger" })
 <div class="form-group">
 @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
 <div class="col-md-10">
 @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
 @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
 </div>
 </div>

 <div class="form-group">
 @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
 <div class="col-md-10">
 @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
 @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
 </div>
 </div>

 

 <div class="form-group">
 <div class="col-md-offset-2 col-md-10">
 <input type="submit" value="Create" class="btn btn-default" />
 </div>
 </div>
 </div>
}

<div>
 @Html.ActionLink("Back to List", "Index")
</div>

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

然后修改一下默認(rèn)的路由: 

public static void RegisterRoutes(RouteCollection routes)
 {
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "User", action = "AddRemoteUser", id = UrlParameter.Optional }
 );
 }

運(yùn)行項(xiàng)目:

輸入測(cè)試數(shù)據(jù):CFS,按Tab鍵后,自動(dòng)就進(jìn)行驗(yàn)證了。 

這里我們對(duì)Name字段就進(jìn)行了Remote驗(yàn)證,現(xiàn)在我想對(duì)Email字段進(jìn)行驗(yàn)證,需要使用到AdditionalFields,屬性,還需要另外添加一個(gè)驗(yàn)證方法: 

using Server_Side_Validation_IN_MVC.StaticData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Server_Side_Validation_IN_MVC.Controllers
{
 public class MyRemoteController : Controller
 {
 // GET: MyRemote
 public JsonResult RemoteValidate(string name) //這里的參數(shù)名字,必須要和視圖中文本框控件的名字一樣,但大小寫無所謂
 {
 //如果存在用戶名,即isExists=true
 bool isExists = MyRemoteStaticData.RemoteList.
 Where(s => s.Name.ToLowerInvariant().
  Equals(name.ToLower())).FirstOrDefault() != null;
 //就向前臺(tái)返回false,表明已經(jīng)存在userName
 return Json(!isExists,JsonRequestBehavior.AllowGet);
 }


 public JsonResult RemoteValidationAddtional(string name, string email)
 {
 //如果存在用戶名,即isExists=true
 bool isExists = MyRemoteStaticData.RemoteList.
 Where(s => s.Name.ToLowerInvariant().
  Equals(name.ToLower()) && s.Email.ToLowerInvariant().Equals(email.ToLower())).FirstOrDefault() != null;
 //就向前臺(tái)返回false,表明已經(jīng)存在userName
 return Json(!isExists, JsonRequestBehavior.AllowGet);
 }
 }
}

 

然后修改對(duì)應(yīng)的實(shí)體類: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Server_Side_Validation_IN_MVC.Models
{
 public class RemoteUser
 {
 [Remote("RemoteValidate", "MyRemote", ErrorMessage = "抱歉用戶名已經(jīng)存在!請(qǐng)重新輸入?。?!")]
 public string Name { get; set; }

 //注意,這里的AdditionalFields="Name",Name字段必須和Modle中的字段完全一樣
 [Remote("RemoteValidationAddtional", "MyRemote", AdditionalFields = "Name", ErrorMessage = "抱歉Email已經(jīng)存在!請(qǐng)重新輸入?。。?)]
 public string Email { get; set; }

 } 
 }

接著運(yùn)行項(xiàng)目:

輸入在測(cè)試類中寫的測(cè)試數(shù)據(jù):

這里就對(duì)兩個(gè)字段進(jìn)行了Remote Validation了。
上面使用了AdditionalFields 驗(yàn)證字段,如果我們想要驗(yàn)證不只一個(gè)字段,可以在AddtionalFiled里面添加,以逗號(hào)分隔就行了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c# datatable用法總結(jié)

    c# datatable用法總結(jié)

    在項(xiàng)目中經(jīng)常用到DataTable,如果DataTable使用得當(dāng),不僅能使程序簡(jiǎn)潔實(shí)用,而且能夠提高性能,達(dá)到事半功倍的效果,現(xiàn)對(duì)DataTable的使用技巧進(jìn)行一下總結(jié)。
    2010-09-09
  • ASP.NET中各種連接數(shù)據(jù)庫(kù)的配置的方法及json數(shù)據(jù)轉(zhuǎn)換

    ASP.NET中各種連接數(shù)據(jù)庫(kù)的配置的方法及json數(shù)據(jù)轉(zhuǎn)換

    本篇文章主要介紹了ASP.NET中各種連接數(shù)據(jù)庫(kù)的配置的方法,詳細(xì)的介紹了MSSQL、Access、Oracle、SQLite、MySQL數(shù)據(jù)庫(kù)配置,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • CorFlags.exe檢查.NET程序平臺(tái)目標(biāo)(Platform Target)的工具

    CorFlags.exe檢查.NET程序平臺(tái)目標(biāo)(Platform Target)的工具

    .NET Framework SDK中的一個(gè)工具程序: CorFlags.exe。CorFlags.exe不但可查詢.NET組件的平臺(tái)目標(biāo)設(shè)定,甚至能直接修改設(shè)定,省去重新編譯的工夫。
    2013-02-02
  • asp.net(c#)限制用戶輸入規(guī)定的字符和數(shù)字的代碼

    asp.net(c#)限制用戶輸入規(guī)定的字符和數(shù)字的代碼

    這幾天在看到一個(gè)網(wǎng)站的注冊(cè)的時(shí)候,就只允許輸入規(guī)定的字符和數(shù)字。我就好奇的寫了一個(gè)校驗(yàn)的代碼。呵呵 不知道對(duì)大家有沒有用。如果有用的話可以保存。沒有用就當(dāng)是看看以下了。
    2010-10-10
  • Excel、記事本數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

    Excel、記事本數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

    將手機(jī)號(hào)批量導(dǎo)入數(shù)據(jù)庫(kù)。思路:先將要導(dǎo)入的文件傳上項(xiàng)目里,然后讀取文件的每行數(shù)據(jù)并插入數(shù)據(jù)庫(kù),操作完后再將上傳的文件刪除
    2013-10-10
  • 如何在ASP.NET Core應(yīng)用程序運(yùn)行Vue并且部署在IIS上詳解

    如何在ASP.NET Core應(yīng)用程序運(yùn)行Vue并且部署在IIS上詳解

    這篇文章主要給大家介紹了關(guān)于如何運(yùn)行Vue在ASP.NET Core應(yīng)用程序并且部署在IIS上的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • asp.net 產(chǎn)生唯一隨機(jī)碼的方法分析

    asp.net 產(chǎn)生唯一隨機(jī)碼的方法分析

    現(xiàn)在的WEB中經(jīng)常會(huì)需要產(chǎn)生一些邀請(qǐng)碼、激活碼。需要是唯一并且隨機(jī)的。下面總結(jié)下一些常用的產(chǎn)生隨機(jī)碼的方法,并分享自己的1個(gè)方法.
    2010-10-10
  • .NET生成水印更好的方法實(shí)例代碼

    .NET生成水印更好的方法實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于.NET中生成水印更好的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Asp.net MVC中Razor常見的問題與解決方法總結(jié)

    Asp.net MVC中Razor常見的問題與解決方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Asp.net MVC中Razor常見的問題與解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • .NET中的HashSet及原理解析

    .NET中的HashSet及原理解析

    HashSet定義在System.Collections.Generic中,是一個(gè)不重復(fù)、無序的泛型集合,本文學(xué)習(xí)下HashSet的工作原理,對(duì).NET中的HashSet相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-03-03

最新評(píng)論

肇州县| 泽普县| 罗田县| 汽车| 清丰县| 南昌市| 德州市| 全南县| 宕昌县| 富平县| 云浮市| 浑源县| 泗水县| 水富县| 和林格尔县| 崇信县| 原阳县| 洛扎县| 清河县| 肥东县| 广昌县| 蓝田县| 芷江| 抚松县| 通河县| 五大连池市| 文山县| 洞口县| 蓬溪县| 无棣县| 凌源市| 宕昌县| 德保县| 大名县| 大悟县| 松桃| 南丹县| 临城县| 泸定县| 肃北| 鄯善县|