2009-01-03 178 views
0

我想知道是否有辦法讓ASP.NET控件可以很好地與我的ASP.NET MVC應用程序一起玩。這是我正在做的。ASP.NET MVC中的用戶控件內的ASP.NET控件的命名

我有一個訂單頁面,顯示有關單個訂單對象的信息。該頁面通常會有一堆數據行,每行代表一個OrderItem對象。每行都是一個ASP.NET用戶控件。在用戶控件上有一個帶有兩個文本框(數量和價格)的表單元素和一個更新按鈕。

當我單擊更新按鈕時,我希望表單將單個OrderItem行的數據發佈到控制器方法並更新數據庫中的OrderItem記錄。

這是我的問題:當帖子發生時,框架抱怨,因爲窗體上的字段不匹配控制器方法上的參數。每個表單字段類似於「OrderItem_1 $ Quantity」或「OrderItem_2 $ Price」,而不是「Quantity」或「Price」,它們與我的方法參數相匹配。

有人告訴我,我可以通過確保在ID是我所有的控制都對頁面獨特的解決這個問題,但允許NAME s到不同形式之間的重複,因此,如果發佈單個行的表單時,名稱可以與我的控制器方法上的內容匹配。

唯一的問題是,我正在使用ASP.NET控件爲我的文本框(我真的想繼續這樣做),我找不到任何方式來覆蓋名稱字段。在ASP.NET控件上沒有Name propery,甚至當我嘗試使用Attributes訪問器屬性通過說「control.Attributes [」Name「] =」Price「;」它只是添加了另一個名稱=屬性的HTML標籤不起作用。

有沒有人知道我能做這個工作?我真的不喜歡像TextBox和DropDown這樣的所有HtmlHelper函數,因爲我討厭讓我的.aspx像PHP或ASP一樣使用< %%>標籤和其他所有東西。謝謝!

回答

3

我認爲你跨越了ASP.NET WebForms和ASP.NET MVC這兩個世界。您確實需要在MVC中使用Html.TextBox方法等。這使您可以完全控制標記,這是MVC的主要優點之一。

控制生成的HTML的問題,例如,獲得兩個名稱屬性,正是MVC旨在解決的問題。如果你停止戰鬥並順其自然,它會更好。

<%>標籤不是一個問題,除非你有邏輯在那裏。把簡單的表示邏輯放在你的視圖上是沒問題的。

如果你不喜歡這樣,那麼最好是堅持使用標準的ASP.NET。