我在我想提交爲SSL的非SSL頁面上有表單。我使用Html.BeginForm創建表單,但這不是必需的。 如果我可以對其進行配置,這也會很好,這樣我就可以設置一個標誌,以便在開發服務器或筆記本電腦上關閉SSL,然後在生產服務器上將其打開。用Html.BeginForm()創建窗體的最佳方式應該是SSL?
我知道我可以讓整個URL成爲一個配置項目,但我希望能夠使它更加靈活,這樣我就可以擁有真實或錯誤的設置。
我在我想提交爲SSL的非SSL頁面上有表單。我使用Html.BeginForm創建表單,但這不是必需的。 如果我可以對其進行配置,這也會很好,這樣我就可以設置一個標誌,以便在開發服務器或筆記本電腦上關閉SSL,然後在生產服務器上將其打開。用Html.BeginForm()創建窗體的最佳方式應該是SSL?
我知道我可以讓整個URL成爲一個配置項目,但我希望能夠使它更加靈活,這樣我就可以擁有真實或錯誤的設置。
您可以覆蓋由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標誌,該標誌應由其控制器傳遞給此視圖。
我知道這是一個老問題, 只是一個清潔的解決方案建議:
<form id="someLie" method="post" action="<%=Url.Action("action", "controller",new {}, YourConfigOrModel.UseSSL ? Uri.UriSchemeHttps : Uri.UriSchemeHttp) %>">
.. form elements..
</form>
這將使絕對路徑包含https://開頭..或正確的相對一個HTTP
我試過類似的東西,我失去了不顯眼的窗體驗證。 – gt124 2011-09-26 15:44:26
這可能是我需要的。讓我試試看! – Zack 2009-09-19 18:10:19
ActionLink呈現錨定標記。有什麼會返回的網址,但有指定協議相同的選項? – Zack 2009-09-19 18:15:53
我編輯了帖子。我相信你可以重寫窗體操作本身。如果這不起作用,您可以在不使用Html.BeginForm的情況下自己渲染表單標籤,在這種情況下,您可以控制其操作設置,但不管您喜歡。 – 2009-09-19 18:19:33