Question

J'ai converti mon application Web de l'aperçu 3 en version 1 et j'essaie maintenant de mettre à profit les nouvelles fonctions du framework. L'un d'entre eux est ModelBinding.

Pour cette situation particulière, j'ai créé une classe qui n'est (pour l'instant) qu'un conteneur d'un groupe de propriétés de type simple. Si je crée un formulaire avec un tas de zones de texte, je souhaite que le framework remplisse une occurrence de SearchBag avec ces champs.

  • Où dois-je commencer? Est ce comportement out of the box ou dois-je mettre en œuvre un SearchBagBinder? J'ai jeté un coup d'oeil à l'IModelBinder mais ne peut pas tout à fait enrouler ma tête autour de lui et la La source DefaultModelBinder ne fonctionne pas fais moi le plus sage.
  • Quel est ce ModelBindingContext?
  • Comment accéder à mes champs de formulaire?
  • Et si les valeurs ne sont pas transmises par un formulaire mais plutôt en entrant un URL directement?
  • Où puis-je trouver les mises à jour informations à ce sujet (la plupart des blogs sont dépassé)? Je croyais lire un post par Phil à la fois, mais je ne peux pas semble ne plus le trouver.

Toute aide est appréciée.

Était-ce utile?

La solution

  
      
  • Où dois-je commencer? Est ce comportement   out of the box ou dois-je mettre en œuvre un   SearchBagBinder? J'ai jeté un coup d'oeil   à l'IModelBinder mais ne peut pas tout à fait   enrouler ma tête autour de lui et la   La source DefaultModelBinder ne fonctionne pas   fais-moi le plus sage.
  •   

Il est hors de la boîte. Vous pouvez utiliser UpdateModel ou ModelBinder pour réaliser vos objectifs.

  
      
  • Quel est ce ModelBindingContext?
  •   

Il contient toutes les informations nécessaires pour que la demande soit liée à votre modèle. Semblable à ControllerContext et ActionFilterContext, il s'agit en gros de l'état du ModelBinder et contient toutes les informations nécessaires pour faire ce que vous voulez, si vous suivez les recommandations des équipes ASP.NET MVC pour ce que le ModelBinder est censé faire.

  
      
  • Comment accéder aux champs de mon formulaire?
  •   
context.HttpContext.Request.Forms["myformfield"];

ou

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
  
      
  • Et si les valeurs ne sont pas transmises   par un formulaire mais plutôt en entrant un   URL directement?
  •   

Si vous devez vérifier à la fois le formulaire et le QueryString, parcourez simplement les deux collections.

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
foreach (var field in context.HttpContext.Request.QueryStrings.Keys) {
    var value = context.HttpContext.Request.QueryStrings[field];
}

ou vous pouvez parcourir Param qui contiendra, Form, QueryString, Headers, etc.

foreach (var field in context.HttpContext.Request.Params.Keys) {
    var value = context.HttpContext.Request.Params[field];
}
  
      
  • Où puis-je trouver les mises à jour   informations sur ce * (la plupart des blogs sont   dépassé)? Je croyais lire un post   par Phill à la fois, mais je ne peux pas   semble ne plus le trouver.
  •   

Vous l'avez compris, Phil est le meilleur endroit pour l'information en tant que premier ministre d'ASP.NET MVC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top