2013-02-19 52 views
0

我有一個設置Client s有User s。MVC4 Model類綁定類屬性

簡單地說,Client只是有一個

[Required] 
public string Name { get; set; } 

User有 - 其中包括它的屬性 - 一個

[Required] 
public virtual Client Client { get; set; } 

當談到創建User秒,User s的下創建(顯然)

因此:在我的User創建頁面,我將Client標識放入Viewbag中,以便我可以通過User發送給我的創建控制器。

的第一個問題,我打的是Modelstate.IsValidfalse - 這是因爲ClientUser模型創建的要求不具有Name。快速修復:也可以輸入名稱並返回。

這個通過驗證,我可以在代碼中正確地檢索Client並將其分配給我的User並保存新的User內容十分重要...

我敢肯定,這也不是什麼奇怪,單關閉式樣設置。必須有一個「正確」的方式來做到這一點,而不是我目前正在做的事情。

1)如何'正確'提供/保留Client我想將新的User分配給? 2)如果以上是不可能的,那麼最好的辦法是什麼?我目前在User.Client.Id字段中存儲了Client.Id,並且使用了[Bind(Exclude="Client")],它完全從User綁定中刪除了Client,我不確定如何通過Client數據並驗證它。

謝謝。

回答

0

如果您使用視圖模型而不是直接將您的實體傳遞給視圖,則這不會成爲問題。

使用View模型的原因之一是您的視圖與數據模型有不同的要求。在這種情況下,您根本不需要視圖中的客戶端信息(除非您在某處顯示該信息)。您只是創建一個新用戶,當您發佈視圖模型時,您將根據提交的信息創建一個新實體。此時,您可以簡單地分配ClientID並保存新的用戶。

+0

啊,我明白了。我曾預料過不同的功能風格,但我沒有意識到我需要一箇中間步驟。謝謝。 – Krenom 2013-02-20 09:24:12