2011-08-30 55 views
16

我在佈局頁面中放置了開始/結束語句,以便我不必在多個頁面上重複它。以下是代碼的簡化版本。是否可以在剃鬚刀內嵌入另一種形式?

@using(Html.BeginForm()) 
{ 
    @RenderBody() 

    <input type = "submit" name = "nextButton" value = "Next-->" /> 
} 

事情運轉良好。不幸的是,我有一個頁面有幾個「刪除」按鈕。我想爲每個刪除按鈕生成一個表單,以便它可以將要刪除的項目的ID發送回控制器。

我可以這樣做,知道已經有另外一種形式了嗎?

感謝您的幫助

+0

有意思......「我把佈局頁面中的開始/結束語句放到了......」聽起來你是在重新創建webforms的道路上邁出的一步。 ;) – NotMe

+0

@Chris Lively:有趣?那麼我必須處理所有的TagBuilder,我不知道還有什麼要做。 – Richard77

回答

20

正如Mrchief所說,HTML規範禁止嵌套窗體。由於MVC只是生成標準的HTML,你必須在規範框架內工作。

爲什麼不只是創建兩個主佈局,並且大多數情況下都使用基於表單的表單,但在需要更多控制嵌入表單時使用沒有表單的表單。

這就是爲什麼你應該只使用表單,而不是在任何地方。

+0

其實我更接近你剛剛提出的。我只是沒有讓該頁面從佈局繼承,它的工作。但是我必須將所有內容從佈局複製/粘貼到應該包含所有刪除按鈕的頁面。但我會按照您的建議進行另一種佈局。 – Richard77

+1

@ Richard77 - 請注意,您也可以嵌套*佈局*。所以,你可以有你的標準佈局,沒有形式。然後,您可以使用另一個使用第一個頁面的佈局,因爲它是佈局,但包含該表單。然後,您可以選擇爲您的客戶頁面進行佈局。這樣,您不必重複代碼。 –

8

待辦事項的形式的嵌套是不允許的每W3 specs

每個表單必須出現在FORM元素內。在單個文檔中可以有 幾種形式,但FORM元素不能是嵌套的 。

有一個關於嵌套表格警告的文章here

在這種情況下,最好爲每個按鈕生成一個form而不是一個表單。

ASP.Net Web窗體通過使用runat=server屬性(以及確保每頁只允許一個頁面的框架)限制您在頁面上有多個窗體。 MVC forms是純HTML,所以你可以有多個。