使用Html.BeginForm()创建表单的最佳方法应该是SSL?

时间:2009-09-19 17:54:05

标签: asp.net asp.net-mvc

我在非SSL页面上有一个表单,我想将其作为SSL提交。我正在使用Html.BeginForm创建表单,但这不是必需的。 如果我可以将其设置为可配置,那也很好,这样我就可以设置一个标志,以便在开发服务器或我的笔记本电脑上关闭SSL并在生产服务器中将其打开。

我知道我可以让整个网址成为配置项,但我希望我能让它更灵活,所以我可以设置一个真或假。

2 个答案:

答案 0 :(得分:5)

您可以覆盖由Html.BeginForm。

创建的表单的action属性
<% 
   var actionURL = (Model.UseSSL ? "https://" : "http://") 
                   + Request.Url.Host + Request.Url.PathAndQuery;    

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

请注意使用Model.UseSSL标志,该标志应由其Controller传递给此视图。

答案 1 :(得分:3)

我知道这是一个老问题, 只是建议更清洁的解决方案:

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

这将呈现包含https:// ..的绝对路径或http

的常规相对路径