2008-09-29 3 views
2

Je me demande pourquoi la chaîne de requête est préférée lors de l'obtention de valeurs à partir d'une requête utilisateur. Où? 1) Code de System.Web.Mvc.DefaultModelBinder ressemble à ceci (seulement une partie de celui-ci):Retour du formulaire, de la chaîne de requête, des valeurs de cookie par priorité dans ASP.NET MVC

HttpRequestBase request = controllerContext.HttpContext.Request; 
    if (request != null) 
    { 
     if (request.QueryString != null) 
     { 
      values = request.QueryString.GetValues(modelName); 
      attemptedValue = request.QueryString[modelName]; 
     } 
     if ((values == null) && (request.Form != null)) 
     { 
      invariantCulture = CultureInfo.CurrentCulture; 
      values = request.Form.GetValues(modelName); 
      attemptedValue = request.Form[modelName]; 
     } 
    } 

2) Si j'ai une méthode dans le contrôleur avec cette signature:

public ActionResult Save(int? x, string y) {... 

la les paramètres (x, y) sont liés aux valeurs de la chaîne de requête, pas de la forme. Je suppose que les valeurs de Request.From ont une priorité plus élevée que Request.QueryString. Editer: Je vois que le second cas est causé par le premier (DefaultModelBinder), ai-je raison?

Quelle est la motivation derrière?

+0

c'est 6 à sens unique, une demi-douzaine à l'autre. Je pense que cela s'applique probablement à la poste de Darryl ci-dessous avec cohérence –

Répondre

1

Cohérence probablement.

La chaîne de requête est la chaîne par défaut depuis le modèle ASP d'origine. Si vous voulez obtenir des données, le formulaire dont vous avez toujours besoin pour obtenir les valeurs à partir de là explicitement si les mêmes noms sont également sur la chaîne de requête.

Questions connexes