Asp.net MVC Comment couper les champs de chaîne d'entrée_Conseils pratiques

微波
Libérer: 2017-06-28 14:04:39
original
1397 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 séparément. 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 l'espace après le mot de passe et remplacez-le par 1 lorsque vous êtes lié à ViewModel Now :

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

1, personnaliser ModelBinder et

hériter de 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é à 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 le fournisseur à la bibliothèque de gestion de liaison

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

.

Coupez l'espace après le mot de passe et il 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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!