校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > asp.net MVC利用自定義ModelBinder過(guò)濾關(guān)鍵字的方法(附demo源碼下載)

asp.net MVC利用自定義ModelBinder過(guò)濾關(guān)鍵字的方法(附demo源碼下載)

熱門標(biāo)簽:400電話辦理哪家性價(jià)比高 天心智能電銷機(jī)器人 濮陽(yáng)外呼電銷系統(tǒng)怎么樣 代理接電話機(jī)器人如何取消 塔城代理外呼系統(tǒng) 遂寧市地圖標(biāo)注app 地圖定位圖標(biāo)標(biāo)注 地圖標(biāo)注專業(yè)團(tuán)隊(duì) 地圖標(biāo)注的公司有哪些

本文實(shí)例講述了MVC利用自定義ModelBinder過(guò)濾關(guān)鍵字的方法。分享給大家供大家參考,具體如下:

前面一篇主要講解了如何利用ActionFilter過(guò)濾關(guān)鍵字,這篇主要講解如何利用自己打造的ModelBinder來(lái)過(guò)濾關(guān)鍵字。

首先,我們還是利用上一篇《asp.net MVC利用ActionFilterAttribute過(guò)濾關(guān)鍵字的方法》中的實(shí)體類,但是我們需要加上DataType特性,以便于我們構(gòu)造的ModelBinder通過(guò)DataTypeName識(shí)別出來(lái):

using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace MvcApplication1.Models
{
   public class TestModel
   {
     public int TID { get; set; }
  
     [DataType("TName")]
     public string TName { get; set; }
  
     [DataType("TSite")]
     public string TSite { get; set; }
   }
}

然后我們新建一個(gè)FilterModelBinder的類,其中內(nèi)容如下:

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

namespace MvcApplication1
{
   public class FilterModelBinder:DefaultModelBinder
   {
     public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
     {
       var valueShouldFilter = bindingContext.ModelMetadata.DataTypeName;
       if (valueShouldFilter == "TName" || valueShouldFilter == "TSite")
       {
         var resultProvider = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
         if (resultProvider != null)
         {
           string result = resultProvider.AttemptedValue;
           result = result.Replace("", "lt;").Replace(">", "gt;");
           return result;
         }
       }
  
       return base.BindModel(controllerContext, bindingContext);
     }
   }
}
 

第13行,主要是獲取我們需要驗(yàn)證的DataTypeName.

第15行,獲取需要驗(yàn)證的值,然后替換,最后返回即可.

 上面做完后,在Global.asax中,我們需要指定一下:

protected void Application_Start()
{
   AreaRegistration.RegisterAllAreas();

   WebApiConfig.Register(GlobalConfiguration.Configuration);
   FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
   RouteConfig.RegisterRoutes(RouteTable.Routes);
   BundleConfig.RegisterBundles(BundleTable.Bundles);

   ModelBinders.Binders.DefaultBinder = new FilterModelBinder();
}

這樣,我們就能使用我們自己的ModelBinder了,下面開(kāi)始測(cè)試:

我們輸入的內(nèi)容如上圖所示,當(dāng)點(diǎn)擊”添加”按鈕的時(shí)候,確彈出如下的錯(cuò)誤提示:

看來(lái),系統(tǒng)會(huì)自動(dòng)檢測(cè)我們的輸入值,發(fā)現(xiàn)有非法字符,會(huì)彈出錯(cuò)誤提示,還好我們可以通過(guò)web.config配置一下,讓其通過(guò)驗(yàn)證:

打開(kāi)最外層的Web.config,輸入以下節(jié)點(diǎn):

configuration>
  system.web>
  httpRuntime requestValidationMode="2.0" />
  /system.web>
  pages validateRequest="false">
  /pages>
/configuration>

然后保存,運(yùn)行,我們看到,系統(tǒng)成功跑了起來(lái),最后的結(jié)果如下:

我們可以看到,通過(guò)我們自定義的ModelBinder,系統(tǒng)自動(dòng)將非法字符進(jìn)行了替換,非常方便。

MVC中處處AOP,現(xiàn)在我們就可以利用現(xiàn)有的知識(shí)做一個(gè)全局過(guò)濾器了。是不是感覺(jué)很方便呢?

完整實(shí)例代碼點(diǎn)擊此處本站下載。

希望本文所述對(duì)大家asp.net程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • Android深入淺出之Binder機(jī)制
  • Android進(jìn)程間通信(IPC)機(jī)制Binder簡(jiǎn)要介紹
  • 理解Android系統(tǒng)Binder機(jī)制
  • Android4.1中BinderService用法實(shí)例分析
  • android IPC之binder通信機(jī)制
  • 一個(gè)用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)
  • 淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路

標(biāo)簽:河南 麗江 本溪 汕頭 宜春 重慶 吉林 婁底

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net MVC利用自定義ModelBinder過(guò)濾關(guān)鍵字的方法(附demo源碼下載)》,本文關(guān)鍵詞  asp.net,MVC,利用,自定義,ModelBinder,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net MVC利用自定義ModelBinder過(guò)濾關(guān)鍵字的方法(附demo源碼下載)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于asp.net MVC利用自定義ModelBinder過(guò)濾關(guān)鍵字的方法(附demo源碼下載)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 盐山县| 和顺县| 宣汉县| 凤阳县| 鹤山市| 丹棱县| 盖州市| 夏河县| 大方县| 玛纳斯县| 河池市| 和顺县| 鹿泉市| 汶川县| 沐川县| 龙游县| 石阡县| 巴楚县| 常熟市| 永宁县| 侯马市| 海伦市| 马尔康县| 阜宁县| 安溪县| 贵州省| 祁东县| 资兴市| 江门市| 台江县| 伊宁市| 咸丰县| 和平县| 连山| 天门市| 西和县| 偏关县| 贵港市| 绥阳县| 城步| 丰台区|