Лучший способ создать форму с HTML. BeginForm (), который должен быть SSL?

Посмотрите в источнике для File::Spec , чтобы видеть, как он загружает правильного делегата на основе операционной системы.:)

File::Spec имеет отдельный файл модуля Perl для каждой ОС. File::Spec::Win32, File::Spec::OS2, и т.д.

Это проверяет операционную систему и загрузит соответствующее .pm файл во времени выполнения на основе ОС.

# From the source code of File::Spec
my %module = (
      MSWin32 => 'Win32',
      os2     => 'OS2',
      VMS     => 'VMS',
      NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare.
      symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian.
      dos     => 'OS2',   # Yes, File::Spec::OS2 works on DJGPP.
      cygwin  => 'Cygwin',
      amigaos => 'AmigaOS');


my $module = $module{$^O} || 'Unix';

require "File/Spec/$module.pm";
our @ISA = ("File::Spec::$module");

7
задан Zack 19 September 2009 в 18:09
поделиться

2 ответа

Вы можете переопределить атрибут действия формы, созданной с помощью 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, который должен быть передан этому представлению его контроллером.

5
ответ дан 7 December 2019 в 05:25
поделиться

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

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

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

3
ответ дан 7 December 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: