2011-02-03 32 views
2

我試圖做一些看起來很簡單的事情:創建一個表單,提交給它所請求的同一個URL,並帶有一個id。表單提交給同一個動作,編號爲

如果我不關心的ID,我可以這樣做:

<% using(Html.Form()) { %> 
    <!-- stuff --> 
<% } %> 

但因爲我想要的ID,我不得不使用不同的過載。

我想沿着線的東西:

<% using(Html.Form(some, args, new {id="myAwesomeForm"})) { %> 
    <!-- stuff --> 
<% } %> 

我不能硬編碼的動作和控制器,因爲形式是在幾個不同的地方使用。有時URL會有參數(/items/edit/1,其他時間不會)

一定有一些令人難以置信的簡單的方法來做到這一點,當我看到它時會讓我覺得自己像個白癡。那麼,它是什麼?


澄清:我指的是HTML元素的ID,如<form action="/my/action[/possible arguments]" id="myAwesomeForm"></form>

回答

2

的動作和控制器使用null;他們將從當前的行動和控制器中填充。

<% using (Html.BeginForm(null, null, null, FormMethod.Post, new { id = 3 })) { %> 

<% } %> 
+0

對不起,我澄清了我的問題。我的意思是`id`的HTML屬性,而不是路由參數。在我上面的例子中,你發佈的內容會導致`

`,這不是我想要的。 – notJim 2011-02-03 01:15:35

+0

@notJim - 哦,只需使用null作爲路由值,並添加FormMethod以獲得正確的簽名。 – tvanfosson 2011-02-03 01:16:27

0

只需使用第一個重載(routeValues爲對象)

它將採用當前,區域名稱控制器名稱操作名稱參數。 是默認的窗體方法。

<% 
    Using Html.BeginForm(New With {.id = 3}) 

    End Using 
%> 
相關問題