2010-01-28 118 views
3

現在在ASP.NET MVC中工作了幾個月我開始在圈子裏走動 - 我經常遇到與編輯視圖相同的編輯視圖。我是否應該繼續放棄編輯視圖並努力爲創建和編輯創建一個視圖?因爲它們本質上是相同的,所以它們進行相同的驗證,唯一的區別在於我執行更新而不是創建的控制器。我可以用一個簡單的if..else語句來做到這一點 - 如果在數據存儲中找到對象,則執行更新,否則執行創建。ASP.NET創建與編輯相同的視圖?

您認爲如何?如果我決定擺脫編輯視圖,是否有可能在將來遇到問題?

澄清:

的主要問題是:能來什麼樣的變化/業務需求了,將需要單獨創建/編輯?這實際上是我想知道的。因爲如果我們有一個Page對象,例如這些屬性有:Title,URL,Active等,並且要求在Create處輸入這些字段,爲什麼我們會允許它們在編輯時出於任何原因而爲空?

感謝名單

回答

3

使用一個用戶控件(Form.ascx爲例),並用它在這兩個Create.aspx和Edit.aspx

<% using (var form = Html.BeginForm()) { 
    Html.RenderPartial("Form"); 
<% } %> 

這樣,郵政正在發生的每一個連接的創建編輯控制器的方法,你也可以在兩個方法中調用相同的Validation方法,並且執行相應的插入或更新。

+0

+1很好的答案。部分視圖讓生活變得更加輕鬆。有一點需要注意的是,部分應該是強類型的,所以你可以通過編輯視圖來傳遞模型對象。 – 2010-01-28 15:54:27

+2

OP還有一件事。檢查NerdDinner教程。在第111頁,ScottGu準確地展示了Alex如何利用部分視圖進行討論。在這裏找到教程:http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf – 2010-01-28 15:59:22

+0

這實際上是我迄今爲止所做的。用Partial,但我有查看用戶控制拆分 - 我的意思是Create.ascx和Edit.ascx,然後Create.aspx和Edit.aspx,它真的很煩人維護當所有對象字段是相同的。這只是複製粘貼和重命名文件,我認爲這是錯誤的。確切地說, – mare 2010-01-28 16:22:59

0

在您的自定義視圖模型,你可以傳遞參數如:編輯模式與目前正在使用的模式(編輯或創建),並採取differemnt行動ANME在這種模式下

1

的功能,如果它持續花費你的發展那麼,我會加入他們的行列......在時機到來時與他們分道揚deal。

另外,您可能想查看一下,看看是否可以使用一些代碼生成來讓您的一些問題更容易一些,如果您希望將它們分開。 (我假設當你需要添加或刪除一個新的領域從兩個問題出現?)

+0

。當我添加或刪除一個字段時,我必須對兩個文件進行編輯。 – mare 2010-01-28 16:28:34

相關問題