2008-11-07 7 views
7

J'ai converti mon application web de preview 3 en beta1 et j'essaie maintenant de mettre les nouvelles fonctions du framework à utiliser. L'un d'eux est ModelBinding.ModelBinding dans asp.net mvc Beta1

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 l'infrastructure complète une instance de SearchBag avec ces champs.

  • Où puis-je commencer? Est ce comportement hors de la boîte ou dois-je mettre en œuvre un SearchBagBinder? Je ai eu un coup d'oeil rapide à l'IModelBinder mais ne peux pas tout à fait enrouler ma tête autour de lui et la sourceDefaultModelBinder ne me fait pas le plus sage.
  • Qu'est-ce que ModelBindingContext?
  • Comment puis-je accéder à mes champs de formulaire?
  • Que se passe-t-il si les valeurs ne sont pas transmises sur par un formulaire, mais plutôt en entrant directement une URL ?
  • Où puis-je trouver des informations à jour sur ce (la plupart des blogs sont )? Je pensais avoir lu un article par Phil en même temps, mais je ne peux pas le trouver.

Toute aide est appréciée.

+0

3 votes, deux étoiles, aucune réponse :( –

+0

3 votes parce que 3 personnes ont trouvé que c'était une bonne question, 2 étoiles parce que 2 personnes l'ont fait comme une question favorite et étaient interessées dans le suivi des réponses – TheCodeJunkie

+0

Je sais ce que le les étoiles et les votes sont pour .. J'étais juste en train de pleurnicher mon besoin d'une réponse –

Répondre

3
  • Où puis-je commencer? Est ce comportement hors de la boîte ou dois-je mettre en œuvre un SearchBagBinder? Je ai eu un coup d'oeil rapide à l'IModelBinder mais ne peux pas tout à fait enrouler ma tête autour de lui et la sourceDefaultModelBinder ne me fait pas le plus sage.

Il est sorti de la boîte. Vous pouvez utiliser UpdateModel ou ModelBinder pour réaliser ce que vous cherchez à faire.

  • Qu'est-ce que ce ModelBindingContext?

Cela contient toutes les informations nécessaires à la demande à être lié à votre modèle. Similaire à ControllerContext et ActionFilterContext, il s'agit essentiellement de l'état de 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 supposé faire.

  • Comment puis-je accéder à mes champs de formulaire?
context.HttpContext.Request.Forms["myformfield"]; 

ou

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

Si vous devez vérifier la forme et la boucle juste QueryString à travers 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 faire une boucle à travers Param qui contiendra, forme, QueryString, en-têtes, etc.

foreach (var field in context.HttpContext.Request.Params.Keys) { 
    var value = context.HttpContext.Request.Params[field]; 
} 
  • Où puis-je trouver la mise à jour informations sur ce * (la plupart des blogs sont dépassés)? Je pensais avoir lu un article de Phill en même temps que , mais je ne peux pas le trouver.

Vous avez raison Phil est le meilleur endroit pour information que le PM d'ASP.NET MVC.

+0

Je n'ai jamais trouvé où ces tutoriels parlaient quand ils ont mentionné HttpContext.Je n'ai pas obtenu cette propriété .. Jusqu'à ce que j'ai ajouté System. Web.Routing à mes références! Doh! Merci beaucoup –