您好,登錄后才能下訂單哦!
asp.net MVC中怎么通過自定義ModelBinder過濾關鍵字,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
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的類,其中內容如下:
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("<", "<").Replace(">", ">"); 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了,下面開始測試:
我們輸入的內容如上圖所示,當點擊”添加”按鈕的時候,確彈出如下的錯誤提示:
看來,系統會自動檢測我們的輸入值,發現有非法字符,會彈出錯誤提示,還好我們可以通過web.config配置一下,讓其通過驗證:
打開最外層的Web.config,輸入以下節點:
<configuration> <system.web> <httpRuntime requestValidationMode="2.0" /> </system.web> <pages validateRequest="false"> </pages> </configuration>
然后保存,運行,我們看到,系統成功跑了起來,最后的結果如下:
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。