2009-09-19 6 views
7

Tengo un formulario en una página no SSL que deseo enviar como SSL. Estoy creando el formulario usando Html.BeginForm, pero eso no es obligatorio. También sería bueno si pudiera hacerlo configurable, de modo que pudiera tener un indicador que configuré para que en el servidor de desarrollo o en mi computadora portátil pueda apagar el SSL y encenderlo en el servidor de producción.¿La mejor forma de crear formulario con Html.BeginForm() que debería ser SSL?

Sé que podría simplemente convertir toda la URL en un ítem de configuración, pero esperaba poder hacerlo más flexible para que pudiera tener una configuración verdadera o falsa.

Respuesta

5

Puede anular el atributo de acción del formulario creado por Html.BeginForm.

<% 
    var actionURL = (Model.UseSSL ? "https://" : "http://") 
        + Request.Url.Host + Request.Url.PathAndQuery;  

    using (
      Html.BeginForm(
         "Action", 
         "Controller", 
         FormMethod.Post, 
         new { @action = actionURL } 
         ) 
     ) 
%> 

Nota el uso de la bandera Model.UseSSL, que debe ser pasado a este Ver por su controlador.

+0

esto podría ser lo que necesito. ¡¡Déjame intentarlo!! – Zack

+0

ActionLink representa una etiqueta de anclaje. ¿Hay algo que devuelva la URL pero tiene la misma opción de especificar el protocolo? – Zack

+0

Edité la publicación. Creo que puede anular la acción de formularios en sí. Si eso no funciona, puede representar la etiqueta del formulario usted mismo sin Html.BeginForm, en cuyo caso puede controlar su configuración de acción como desee. –

3

Sé que es una cuestión de edad, sólo una sugerencia para una solución más limpia:

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

Esto hará que una ruta absoluta que contiene el https: // .. o una relación regular para http

+3

He intentado algo similar a esto y perdí la validación discreta para el formulario. – gt124

Cuestiones relacionadas