我在非SSL页面上有一个表单,我想将其作为SSL提交。我正在使用Html.BeginForm创建表单,但这不是必需的。 如果我可以将其设置为可配置,那也很好,这样我就可以设置一个标志,以便在开发服务器或我的笔记本电脑上关闭SSL并在生产服务器中将其打开。
我知道我可以让整个网址成为配置项,但我希望我能让它更灵活,所以我可以设置一个真或假。
答案 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
的常规相对路径