10 votes

Comment découper() toutes les entrées par modèle en c# MVC

J'ai constaté que toutes les valeurs passées par le modèle ne sont pas réduites dans ASP.net MVC3.

Existe-t-il un moyen de :

  1. Appliquer un trim() sur chaque champ du modèle (tous les champs de type chaîne, au moins ; mais tous les champs de formulaire sont des chaînes avant d'être traités par le modèle, il vaut donc mieux les découper tous).
  2. Doit avant ModelState.IsValid() (parce que j'ai souvent trouvé des codes bloqués à des endroits bizarres) ModelState.IsValid et retrouvée par la suite parce que l'élément du formulaire n'a pas été rogné).

Gracias.

12voto

Vous devrez créer un classeur de modèles personnalisé pour découper toute propriété de modèle qui est une chaîne de caractères.

Références :
Liaison de modèle personnalisée à l'aide de IModelBinder dans ASP.NET MVC
Iterating on an ASP.NET MVC Model Binder (Iteration sur un modèle ASP.NET MVC Model Binder)
6 astuces pour la liaison de modèle ASP.NET MVC
Un meilleur modèle de classeur

En principe, vous pouvez adopter l'une des deux approches suivantes :

  1. Mettre en œuvre la IModelBinder interface
  2. Sous-classe de la DefaultModelBinder classe

Exemple

public class StringTrimmingBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        // trim your string here and act accordingly

        // in the case the model property isn't a string
        return base.BindModel(controllerContext, bindingContext);
    }
}

1voto

Allen Wang Points 408

Pour information, j'ai également écrit un petit plug-in JQuery pour mon projet afin d'utiliser trim(), startsWith() et endsWith() pour toutes les chaînes d'entrée du côté client.

(function ($) {

    String.prototype.trim = function ()
    { return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "")) };

    String.prototype.startsWith = function (str)
    { return (this.match("^" + str) == str) };

    String.prototype.endsWith = function (str)
    { return (this.match(str + "$") == str) };     

})(jQuery);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X