2009-05-18 10 views

Répondre

62

Matt doivent fonctionner correctement. Si vous passez encore FormMethod.Post, cependant, vous devez le faire comme ceci:

Html.BeginForm("action","controller", new { Id = 12345 }, FormMethod.Post); 

Inverser les troisième et quatrième paramètres entraînera la Id être traité comme un attribut au lieu d'une valeur d'itinéraire.

+0

Je perds les valeurs de route existantes lorsque j'utilise cette méthode. Dites que mon URL était '/ controller/action? Type = golden', la forme cible (en utilisant votre chemin) devient maintenant'/controller/action/12345' alors que je veux que ce soit '/ controller/action/12345? Type = doré '. Savez-vous comment préserver les valeurs de route existantes et ajouter les miennes? –

+1

@Aki Essayez d'ajouter 'type' comme champ caché dans le formulaire et il devrait être envoyé. –

+0

Je pourrais, mais vous voyez que ce n'est pas mon problème. Il n'est pas nécessaire que je n'ai que 'type' dans ma chaîne de requête, je pourrais avoir N nombre de params, qui pourraient être différents dans différentes actions. Ce serait une vraie peine d'aller dans toutes ces actions et d'ajouter les paramètres de requête comme champs cachés. –

10

Html.BeginForm("action", "controller", new {Id = 12345})

+1

ne fonctionne pas, il ajoute un attribut à la balise de formulaire. – mrblah

+4

vérifiez le nom du paramètre routeValues ​​- assurez-vous que vous utilisez celui-là pas htmlAttributes. –

7
Html.BeginForm("action", "controller", new { id = ViewBag.FileID }, 
FormMethod.Post, new { id = "feedbackform" }) 

Quant au querystring, ?type=golden, je ne sais pas comment faire. Bien sûr, un querysting est un get, et sape tout le but de FormMethod.Post. Je veux dire, vous pouvez utiliser FormMethod.Get, si vous voulez des données querystring, et cela pourrait être ce que vous cherchez.

En outre, vous pouvez éviter html.beginform et faire la chaîne de requête, get + post, manuellement avec une balise de formulaire.

Troisièmement, si vous utilisez le formulaire, vous pouvez faire un champ caché:

[input type=hidden name="type" value="golden"] 

Ensuite, lorsque le bouton est appuyé sur la soumettre valeur est passée correctement comme une variable de forme.

Questions connexes