2009-12-27 122 views

回答

14

所有的HtmlHelper.BeginForm方法的作用是幫助您創建一個<form>標記,針對本地控制器。如果要發佈到外部網站,剛寫出來的實際<form>標籤,即

<form action="http://www.example.com/someaction" method="post"> 
    Actual form content in here 
</form> 

這一切就是這麼簡單。 MVC表單不像ASP.NET WebForms中的表單,其中有許多ViewState和事件字段以及其他不可思議的元素。他們只是普通的舊HTML表單。

+0

是的,我做到了。但我只是想知道如果我失去了在MVC的東西(從RoR的土地來,有一個表單{URL =()}方法。THX。 – dale 2009-12-27 05:31:26

+4

有可能涉及到的是不要讓你,如果創建驗證一些變薄你手動創建表單 - 所以要小心,如果你使用MVC驗證與jQuery – 2010-05-18 22:58:34

+1

正如西蒙韋弗指出的,如果你不使用HtmlHelper驗證框架不起作用。我自己遇到這個問題 – Zasz 2011-07-20 06:55:06

0

檢查MVC的源代碼,html.beginform方法不僅只創建本地的HTML表單,也可加的這只是我想客戶端驗證某事,

if (htmlHelper.ViewContext.ClientValidationEnabled) 
{ 
    htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"]; 
} 

所以這將是一個問題,我只寫我自己的擴展

57

BeginForm方法有幾個重載。 爲了設置action屬性與所需的URL形式的標籤,你需要使用BeginForm的下列過載:

BeginForm(String, String, FormMethod, IDictionary<String, Object>) 
// here are the parameter names: 
BeginForm(actionName, controllerName, method, htmlAttributes) 

既然你想要發佈到外部網站,也沒有必要設置actionName和controllerName,只需將它們保留爲空。

@Html.BeginForm(
    null, null, FormMethod.Post, new {@action="http://cnn.com/post"} 
) 

這不會編碼操作參數。

+1

這節省了我的時間,太好了! – Govind 2014-06-27 14:16:24