一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法

Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法

2020-05-08 14:29云中客 ASP.NET教程

這篇文章主要介紹了Asp.net MVC 如何對所有用戶輸入的字符串字段做Trim處理,需要的朋友可以參考下

經常需要對用戶輸入的數據在插入數據庫或者判斷之前做Trim處理,針對每個ViewModel的字段各自做處理是我們一般的想法。最近調查發現其實也可以一次性實現的。

MVC4.6中實現方式

1,實現IModelBinder接口,創建自定義ModelBinder。

?
1
2
3
4
5
6
7
8
9
10
public class TrimModelBinder : IModelBinder
  {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
      var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
      string attemptedValue = valueResult?.AttemptedValue;
 
      return string.IsNullOrWhiteSpace(attemptedValue) ? attemptedValue : attemptedValue.Trim();
    }
  }

2,添加ModelBinder到MVC的綁定庫。

?
1
2
3
4
5
6
7
8
9
protected void Application_Start()
    {
      //System.Web.Mvc.ModelBinders.Binders.DefaultBinder = new ModelBinders.TrimModelBinder();
      System.Web.Mvc.ModelBinders.Binders.Add(typeof(string), new ModelBinders.TrimModelBinder());
      AreaRegistration.RegisterAllAreas();
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
      RouteConfig.RegisterRoutes(RouteTable.Routes);
      BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

3,確認一下效果

Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法

將密碼后面的空格做Trim處理,綁定到ViewModel的時候變成1了:

Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法

Asp.net core 1.1 MVC中實現方式

1,自定義ModelBinder并繼承ComplexTypeModelBinder

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TrimModelBinder : ComplexTypeModelBinder
  {
    public TrimModelBinder(IDictionary propertyBinders) : base(propertyBinders) { }
 
    protected override void SetProperty(ModelBindingContext bindingContext, string modelName, ModelMetadata propertyMetadata, ModelBindingResult result)
    {
      var value = result.Model as string;
 
      result= string.IsNullOrWhiteSpace(value) ? result : ModelBindingResult.Success(value.Trim());
 
      base.SetProperty(bindingContext, modelName, propertyMetadata, result);
    }
  }

2,為ModelBinder添加自定義Provider

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class TrimModelBinderProvider : IModelBinderProvider
  {
    public IModelBinder GetBinder(ModelBinderProviderContext context)
    {
      if (context.Metadata.IsComplexType && !context.Metadata.IsCollectionType)
      {
        var propertyBinders = new Dictionary();
        for (int i = 0; i < context.Metadata.Properties.Count; i++)
        {
          var property = context.Metadata.Properties[i];
          propertyBinders.Add(property, context.CreateBinder(property));
        }
        return new TrimModelBinder(propertyBinders);
      }
      return null;
    }
  }

3,將Provider添加到綁定管理庫

?
1
2
3
4
services.AddMvc().AddMvcOptions(s =>
      {
        s.ModelBinderProviders[s.ModelBinderProviders.TakeWhile(p => !(p is ComplexTypeModelBinderProvider)).Count()] = new TrimModelBinderProvider();
      });

4,確認一下效果

Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法

將密碼后面的空格做Trim處理,綁定到ViewModel的時候變成1了:

Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法

以上所述是小編給大家介紹的Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/lixiaobin/p/AspnetMVCTrim.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 无人区免费一二三四乱码 | 亚欧毛片基地国产毛片基地 | 亚洲 日本 天堂 国产 在线 | 国产麻豆91欧美一区二区 | 香蕉成人国产精品免费看网站 | 精品综合久久久久久8888 | 欧美se图| 日韩欧美国内 | 亚洲欧美久久一区二区 | 18日本xxxxxxⅹxx96| 成人福利网 | 超级碰碰免费视频 | 亚洲乱码一区二区三区国产精品 | 国产美女亚洲精品久久久综合 | 日韩国产成人 | 国产剧情一区 | 9自拍视频在线观看 | poverty中国老妇人 | 全色黄大色黄大片爽一次 | 波多野结衣家庭教师 | 99撸| gogort人体的最新网站 | 热门小说同人h改编h | 夫妻性生活影院 | 免费观看日本人成影片 | 第一次处破女18分钟 | 特级老女人淫片高清视频 | 蜜桃成熟3在线观看 | aaaa黄 | 亚洲视频久久 | 69日本xxxxxxxxx98 69人成网站色www | 欧美日韩一区二区三区韩大 | 俄罗斯处女摘花 | 色里番52kkm全彩 | 成人国产在线视频在线观看 | 亚洲精品国产综合久久一线 | 国产一级一级一级成人毛片 | 高清不卡一区二区 | 日韩视频在线免费观看 | 精品精品国产自在现拍 | 亚洲成人网页 |