千家信息网

Asp.net MVC如何对输入的字符串字段做Trim处理

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章将为大家详细讲解有关Asp.net MVC如何对输入的字符串字段做Trim处理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MVC4.6中实现方式1,实现I
千家信息网最后更新 2024年09月21日Asp.net MVC如何对输入的字符串字段做Trim处理

这篇文章将为大家详细讲解有关Asp.net MVC如何对输入的字符串字段做Trim处理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

MVC4.6中实现方式

1,实现IModelBinder接口,创建自定义ModelBinder。

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的绑定库。

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,确认一下效果

将密码后面的空格做Trim处理,绑定到ViewModel的时候变成1了:

Asp.net core 1.1 MVC中实现方式

1,自定义ModelBinder并继承ComplexTypeModelBinder

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

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添加到绑定管理库

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

4,确认一下效果

将密码后面的空格做Trim处理,绑定到ViewModel的时候变成1了:

关于"Asp.net MVC如何对输入的字符串字段做Trim处理"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0