2012-03-17 17 views

回答

1

當您可以將表單直接發佈到HTTPS時,爲什麼要將表單發佈重定向到HTTPS?

在任何情況下,您不必在MVC中使用HTMLHelper,只需使用普通HTML寫出您的表單即可。因此,而不是使用Html.BeginForm(...)你可以使用這個:

<form action="https://www.omegusprime.com/Request/ABC" method="POST"> 

... 

your form fields 

... 

</form> 
0

一種方式來做到這一點是at the routing level。但是就像史蒂夫說的那樣,這很黑。

技術上你不能重定向一個帖子。您可以將它從一個動作轉發到另一個動作,但不能發出重定向。重定向是GET而不是POST。

真的最好的方法是確保表單在HTTPS GET請求中呈現。如果頁面爲https://whatever.com,則Html.BeginForm將呈現相對於該頁面的URL。因此,從HTTPS頁面發佈到相對URL意味着該表單將通過HTTPS發佈。

我第二個保羅的問題:你爲什麼要通過HTTP呈現表單,但是通過HTTPS POST呢?

1

我同意保羅的回答。編寫標準的HTML標籤似乎是唯一的方法。

但我會建議使用HTML和MVC的URL Helper的混合。它確保網址是正確的,並使用正確的域名。當您擁有本地開發版本(即https://localhost/Request/ABC)和您的生產版本(https://www.omegusprime.com/Request/ABC)時,這是一項優勢。

VB例如:

<form action="@Url.Action("ABC", "Request", Nothing, "https")" method="post"> 
... 
</form> 

應該像這樣在C#:

<form action="@Url.Action("ABC", "Request", null, "https")" method="post">