2009-09-19 5 views
7

J'ai un formulaire sur une page non-SSL que je veux soumettre comme SSL. Je crée le formulaire en utilisant Html.BeginForm mais ce n'est pas obligatoire. Ce serait également bien si je pouvais le rendre configurable, de sorte que je puisse avoir un drapeau que j'ai défini de sorte que sur le serveur de dev ou sur mon ordinateur portable je puisse éteindre le SSL et l'allumer dans le serveur de production.La meilleure façon de créer un formulaire avec Html.BeginForm() qui devrait être SSL?

Je sais que je pourrais juste faire l'URL entière un élément de configuration mais j'espérais que je pourrais le rendre plus flexible ainsi je pourrais juste avoir un vrai ou faux arrangement.

Répondre

5

Vous pouvez remplacer l'attribut d'action du formulaire créé par Html.BeginForm. Notez l'utilisation de l'indicateur Model.UseSSL, qui doit être transmis à cette vue par son contrôleur.

+0

cela pourrait être ce dont j'ai besoin. laissez-moi essayer! – Zack

+0

ActionLink restitue une balise d'ancrage. Y a-t-il quelque chose qui retournera l'URL mais aura la même option de spécifier le protocole? – Zack

+0

J'ai modifié le post. Je crois que vous pourrez peut-être remplacer l'action des formulaires elle-même. Si cela ne fonctionne pas, vous pouvez afficher l'étiquette de formulaire vous-même sans Html.BeginForm, auquel cas vous pouvez contrôler son réglage d'action comme bon vous semble. –

3

Je sais qu'il est une vieille question, juste une suggestion pour une solution plus propre:

<form id="someLie" method="post" action="<%=Url.Action("action", "controller",new {}, YourConfigOrModel.UseSSL ? Uri.UriSchemeHttps : Uri.UriSchemeHttp) %>"> 
.. form elements.. 
</form> 

cela va rendre un chemin absolu contenant https: // .. ou un régulier relatif pour http

+3

J'ai essayé quelque chose de similaire et j'ai perdu la validation discrète pour le formulaire. – gt124

Questions connexes