Maison > développement back-end > Tutoriel C#.Net > Exemple de méthode Asp.net MVC permettant de couper la chaîne saisie par l'utilisateur

Exemple de méthode Asp.net MVC permettant de couper la chaîne saisie par l'utilisateur

零下一度
Libérer: 2017-06-19 09:58:28
original
1798 Les gens l'ont consulté

Cet article présente principalement comment Asp.net MVC supprime tous les champs chaîne saisis par l'utilisateur. Les amis dans le besoin peuvent se référer à

Il est souvent nécessaire de couper. les données saisies par l'utilisateur avant d'insérer les données dans la bibliothèque ou de porter un jugement. C'est notre idée générale de traiter les champs de chaque ViewModel individuellement. Des enquêtes récentes ont révélé que cela peut être réalisé en une seule fois.

Méthode d'implémentation dans MVC4.6

1, implémentez l'interface IModelBinder et créez un ModelBinder personnalisé.

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();
    }
  }
Copier après la connexion

2. Ajoutez ModelBinder à la bibliothèque de liaison 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);
    }
Copier après la connexion
3. Confirmez l'effet

Coupez les espaces après le mot de passe. lié à ViewModel, il devient 1 :

Méthode d'implémentation Asp.net core 1.1 MVC

1, personnalisez ModelBinder et

Héritez 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);
    }
  }
Copier après la connexion
2, ajoutez un fournisseur personnalisé pour ModelBinder


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;
    }
  }
Copier après la connexion
3, ajoutez un fournisseur au bibliothèque de gestion des liaisons


services.AddMvc().AddMvcOptions(s =>
      {
        s.ModelBinderProviders[s.ModelBinderProviders.TakeWhile(p => !(p is ComplexTypeModelBinderProvider)).Count()] = new TrimModelBinderProvider();
      });
Copier après la connexion
4. Confirmez l'effet

Placez le mot de passe après Les espaces sont coupés et devient 1 lorsqu'il est lié à ViewModel :


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal