2010-05-18 607 views
6

MVC應用程序的查看和編輯模型通常是一種好的做法嗎?意思是,我不希望視圖模型上的驗證屬性,因爲它基本上是隻讀的。ASP.NET MVC - 視圖編輯模型

回答

0

你可以在ViewModel中有一個名爲ReadOnly(boolean)的屬性。基於該屬性,可以呈現適當的視圖。

0

您可以使用您的模型進行編輯。你綁定視圖的可編輯屬性和其他保持相同甚至有人被假冒的投入。

public ActionResult Update([Bind(Include=」First, Last」)]User user) 

這可以確保您獲取First和Last命名字段。

也許你錯過了它,但不顯示不可編輯模型屬性的可編輯輸入。

1

如果您的意見是CRUD意見,使用相同的視圖模型是有道理的。在只讀視圖中,驗證屬性將被忽略,因爲您沒有輸入表單。一旦你脫離CRUD,你將在如何構建虛擬機方面有更多的變化。我有些情況下只能在插入時設置一個字段。在這種情況下,我使用相同的虛擬機來渲染添加,只讀和更新屏幕(在View HTML本身中使用DisplayFor vs InputFor),但是我的插入和更新操作方法有不同的輸入模型。

2

我通常爲每個視圖創建一個新的視圖模型。我發現ViewModel在實踐中的重用性非常低,並試圖使它們超級通用並不好,並導致一些奇怪的情況。

當我第一次開始創建ViewModels時,我會創建這些真正抽象的ViewModel,我試圖強化一堆業務邏輯,但後來我意識到在大多數情況下,我試圖在每種情況下顯示的數據是完全不同,重用不起作用。所以我剛開始打破我的ViewModel成爲一次使用的小碎片。到目前爲止,這一切運作良好。

我現在大部分業務邏輯都試圖保留在模型中而不是視圖模型中。我的情況我的模型是一個實體框架模型,我把業務邏輯放在我的數據庫對象的部分類中。

0

我認爲你誤解了在模型視圖控制模式中分離視圖和模型的目的。

該視圖是關於如何定義用戶將看到的數據,即網頁的外觀。

該模型定義將使用的數據,即視圖將顯示的內容。

如果您決定需要兩個不同的網頁來查看數據和編輯數據,那麼它將適合MVC模式,這兩個頁面應該有單獨的模型和視圖。

但我通常反對將查看和編輯數據分成兩個網頁。今天用ajax,我只是在一個網頁上做。

+0

他說的是ViewModels,而不是視圖和模型。 – UpTheCreek 2010-08-05 10:24:13

+0

而且區別是什麼? – eaglestorm 2010-08-06 05:25:33