Лучший способ создать форму с Html.BeginForm (), который должен быть SSL? - PullRequest
7 голосов
/ 19 сентября 2009

У меня есть форма на странице без SSL, которую я хочу отправить как SSL. Я создаю форму, используя Html.BeginForm, но это не обязательно. Было бы также хорошо, если бы я мог настроить его так, чтобы у меня был установлен флаг, чтобы на сервере dev или на моем ноутбуке я мог отключить SSL и включить его на рабочем сервере.

Я знаю, что мог бы просто сделать весь URL-адрес элементом конфигурации, но я надеялся, что смогу сделать его более гибким, чтобы у меня была возможность установить значение true или false.

Ответы [ 2 ]

5 голосов
/ 19 сентября 2009

Вы можете переопределить атрибут действия формы, созданной Html.BeginForm.

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

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

Обратите внимание на использование флага Model.UseSSL, который должен быть передан этому представлению его контроллером.

3 голосов
/ 27 июля 2010

я знаю, что это старый вопрос, просто предложение для более чистого решения:

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

будет отображаться абсолютный путь, содержащий https: // .. или обычный относительный путь для http

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...