2008-11-30 75 views
2

我有一個母版頁,我的所有視圖都繼承自它。我遇到的問題是在母版頁中創建的表單標籤,然後是在視圖中創建的表單標籤。母版頁和視圖中的表格

由於窗體是在主頁面窗體內,所有我的回發被髮送到控制器的索引方法,並迫使我創建一個強制HttpPost的新方法索引。

此外,這會導致類似下列路徑的問題:/ projects/add /和/ projects/delete/1,其中一切都是路由器到索引方法。

WTF?我在這裏錯過了什麼嗎?

謝謝任何​​人

+0

您是否有明確的理由在您的母版頁中有表單? ASP.NET允許在頁面上使用多個表單,因此您需要自己控制表單。 – MrJavaGuy 2008-11-30 18:04:49

回答

1

從母版頁中刪除表單。

查看一些示例視頻here以更好地理解MVC哲學。

順便說一句:在ASP.NET MVC中,沒有回傳。

+0

在MVC中沒有任何東西可以阻止回發到創建視圖的相同動作,但是它不是必須推薦的。 – MrJavaGuy 2008-11-30 19:18:52

1

在我看來,你真的應該把MasterPages看作佈局而不是功能頁面。實際上,視圖根本不會從主頁面「繼承」。在傳統的Webforms中,主頁實際上是用戶控件。所以我會嘗試不把基類功能放入主頁面。所以也許這是一些混淆的地方。

+0

母版頁沒有功能。開箱即用,它有一個表單元素。因此,將數據提供給主數據的容器本身就是表單,所以現在您在另一個表單中有一個服務器表單。我已經單獨評論過他們,但仍然是同樣的問題。 – IEnumerator 2008-12-01 15:38:21

+0

母版頁的MVC版本沒有開箱即用的表單元素。也許你選擇了Webforms版本。從Visual Studio中的模板中選擇一個母版頁時,必須小心。很容易選擇錯誤的。 – 2008-12-03 12:44:14

0

ASP.NET MVC不應該做「回傳」......這完全沒有意義。刪除你在那裏的任何「基本上是合併的形式標籤」,並且只在輸入字段周圍放置一個「表單」標籤,這些輸入字段是爲了某種特定的目的而發佈的。

事實上,你有一個全歸併的表單標籤(這與傳統的asp.net一樣)意味着你沒有爲該表單定義的原因,這是(再次)缺少MVC的觀點。

這是一個老的文章,但它可以與傳統之間的差異幫助和MVC:ASP.NET MVC in the Real World

0

如果您需要在每一頁上常見的元素,因此原因,你有一個表格母版頁上,然後將表單元素與site.master文件一起移動到位於共享文件夾中的用戶控件。然後在每個視圖頁面中通過Html.RenderPartial包含用戶控件。這將只需要1行代碼,也許每個視圖div標籤不壞。

順便說一句,BTW是位於母版頁的登錄或搜索控件偶然的形式?