Html.BeginForm (), avec seulement une forme Id n'est pas de générer l'action correcte url
Je veux seulement ajouter de la formId dans le beginForm()
Si j'ai essayer d'utiliser
Html.BeginForm(null, null, FormMethod.Post, new {@id="Id"})
ensuite le code Html généré est
<form action="/newquestion/payment/b9f88f80-f31f-4144-9066-55384c9f1cfc" ... >
je ne sais pas comment l'action de l'url est générée j'ai donc essayé,
Html.BeginForm(new {@id="Id"})
mais alors l'url de l'action ressemble à ceci
<form action="/newquestion/payment/Id... >
Dans les deux cas, l'url de l'action n'est pas ce qu'il devrait être et il n'est pas de frapper le poteau d'action du contrôleur.
MVC utilise le routeur pour déterminer l'URL. Qu'est-ce que l'URL censé être?
Je n'ai pas envie de mettre un correctif contrôleur et l'action dans le BeginForm() parce que je veux appeler le POST d'action basé sur la OBTENIR d'action. Par exemple si je l'appelle de paiement (SE), alors il devrait appeler de paiement (POST) et si je l'appelle Bundle (SE), alors il devrait appeler Bundle (POST) d'action. Cela fonctionnait bien jusqu'à maintenant, parce que je n'avais Html.BeginForm() mais maintenant, je veux ajouter le formId et que c'est de casser le comportement.
Je n'ai pas envie de mettre un correctif contrôleur et l'action dans le BeginForm() parce que je veux appeler le POST d'action basé sur la OBTENIR d'action. Par exemple si je l'appelle de paiement (SE), alors il devrait appeler de paiement (POST) et si je l'appelle Bundle (SE), alors il devrait appeler Bundle (POST) d'action. Cela fonctionnait bien jusqu'à maintenant, parce que je n'avais Html.BeginForm() mais maintenant, je veux ajouter le formId et que c'est de casser le comportement.
OriginalL'auteur Amit | 2013-11-26
Vous devez vous connecter pour publier un commentaire.
Lorsque vous essayez de générer un itinéraire, comme avec
BeginForm
, MVC fera de son mieux pour inclure des choses que vous pourriez avoir besoin.Si vous êtes à la
domain.com/Home/Index/b9f88f80-f31f-4144-9066-55384c9f1cfc
et que vous utilisez le code que vous avez à condition que le formulaire est généré avec l'action, du contrôleur et de la route des valeurs qu'il les trouve.Un moyen de contourner cela est de forcer id à rien (comme une chaîne vide).
Observer:
La
new { @id = string.Empty }
est un anonyme, un objet qui représente la route des valeurs.Je ne suis pas sûr de ce que suggèrent. Le code ci-dessus fonctionne pour moi avec MVC4 et MVC5.
A travaillé comme un charme dans MVC 5 merci
OriginalL'auteur Rowan Freeman
Modification @id id.
OriginalL'auteur Yousuf
En raison de System.Web.Mvc.Html ( en System.Web.Mvc.dll ) le commencer formulaire est défini comme hurla:-
Donc, il a travaillé pour moi dans MVC 4
OriginalL'auteur Muhammad Ashikuzzaman