2010-11-07 56 views
0

我有這個問題,在過去的幾個小時裏一直在bug我。MVC2,在各種視圖中使用相同的EF實體

  1. 讓我們假設我有這個註冊表格,我需要填滿它,所有的propertieshave RequiredAttribute標籤,型號被命名爲「用戶」一EF實體。

  2. 我有這個第二個編輯帳戶詳細信息表單,此時不再需要特定的字段(「用戶名」),因爲我已經擁有了它,用戶不需要再次填寫並且事實上它會顯示在編輯窗體上。

問題: 發佈第二編輯表單時,顯然我是stucked與用戶名RequiredAttribute標籤。

我只想通過添加一個「綁定」屬性以解決這一「排除」選項,但是,這是我當前的模型:

public class AccountDetailsModel 
{ 
    public User user { get; set; } 
    public string NEWPASSWORD1 { get; set; } // new password 
    public string NEWPASSWORD2 { get; set; } // new password comparison 
} 

,只是看起來像綁定屬性與排除選項犯規處理複雜模型類型。我無法得到它在這種情況下工作。

林卡住,抓我的頭,現在很長一段時間......

我怎麼能解決這個?

我只想在兩個不同的視圖上重複使用我的EF實體(用戶)及其DataAnnotations。

在此先感謝。

回答

1

我只想在兩個不同視圖上重複使用我的EF實體(用戶)及其DataAnnotations。

這是問題所在。你不應該這樣做。我建議您設置視圖模型,這些視圖模型是專門針對給定視圖定製的類,並且僅包含此視圖的必要驗證屬性。爲了簡化您的EF模型和視圖模型之間的映射,您可以使用AutoMapper

+0

我試圖避免重寫與basicaly相同的驗證相同的屬性,這是做到這一點的最佳方式?不能重新使用它?繼承或類似的東西? – Brizio 2010-11-07 18:07:53

+0

不,不要對視圖模型使用繼承,也不要使用它們不相同的屬性。驗證邏輯是不同的。在一些觀點中,一些屬性是需要的,而另一些則不是。當然,你將不得不重複一些屬性,但這不是問題。儘管你可以在視圖模型之間使用繼承。 – 2010-11-07 18:09:34

+0

我會檢查一下AutoMapper,謝謝。 – Brizio 2010-11-07 18:09:55

0

將UserName置於隱藏輸入字段中以獲取詳細信息頁面。

+0

不是很安全,你確定嗎? – Brizio 2010-11-07 18:06:37

+0

您應該認證/授權訪問/更改此類信息的用戶。無論如何,對吧? – asfsadf 2010-11-07 18:12:01

相關問題