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

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

 更新時間:2016年03月31日 12:01:17   作者:程序詩人  
這篇文章主要介紹了MVC利用自定義ModelBinder過濾關(guān)鍵字的方法,結(jié)合實例形式詳細(xì)分析了自定義ModelBinder過濾關(guān)鍵字的原理與具體實現(xiàn)技巧,需要的朋友可以參考下

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

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

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

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; }
   }
}

然后我們新建一個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行,主要是獲取我們需要驗證的DataTypeName.

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

 上面做完后,在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了,下面開始測試:

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

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

打開最外層的Web.config,輸入以下節(jié)點:

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

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

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

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

完整實例代碼點擊此處本站下載。

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

相關(guān)文章

最新評論

富民县| 镇康县| 马边| 壤塘县| 太湖县| 顺义区| 桓仁| 湘潭市| 武山县| 辉县市| 准格尔旗| 清丰县| 乌什县| 宣恩县| 准格尔旗| 涪陵区| 句容市| 东平县| 政和县| 大姚县| 左云县| 玛多县| 富宁县| 永福县| 武夷山市| 方山县| 刚察县| 婺源县| 西城区| 丹凤县| 钟祥市| 荃湾区| 沙湾县| 四平市| 西畴县| 斗六市| 湟源县| 图片| 文水县| 辽宁省| 毕节市|