1

我需要一些MVC架構的幫助。我使用以下架構來創建名爲User的對象。MVC架構 - 模式

UserRepository - > IUserRepository - > UserService - > IUserService - > UserController的

用戶對象來自我的數據庫,我使用的EntityFramework。我有一個函數返回用戶列表Return_All_Users()。其中一個返回的字段是「UserType」。這是一個數字,但當我在我的Index.aspx頁面中顯示列表時,我希望它顯示爲一個字符串。 「UserType」的編號需要查看字典以查找與「Administrator」一樣的數字的字符串,我希望該字符串顯示在我的索引頁面中。

我該怎麼做呢?我目前使用此功能:

public IEnumerable<User> Return_All_Users() 
{ 
    //my code here 
} 

我有另一篇文章的一個類似的問題,並建議我應該的IEnumerable返回一個字符串,而不是用戶對象。我嘗試過,但後來我正在使用動態模型,我不想這樣做。我也不知道如何使用動態模型,所以我想也許有更好的方法來做到這一點。

這應該發生在我的UserService中嗎?也許我需要創建一個名爲NewUser的新類,並將UserType定義爲一個字符串,然後實例化一個新的NewUser並傳遞來自User的值。在傳遞UserType之前,我會查看字典並獲取關鍵字的正確值。

我應該那樣做,還是有更好的方法?


當我發佈這個問題後,我只是想用存儲過程做到這一點。也許在我的數據庫中使用存儲過程來返回數據,而不是直接從我的數據庫表中查找我的數據。

回答

0

我會創建一個視圖模型UserView,它被格式化爲表示您的視圖如何最好地使用該數據。您可以在您的Repository或Controller中執行User到UserView的映射,具體取決於您喜歡進行此類映射的位置。

+0

我使用Google搜索查看模型。我不知道如何做到這一點,但讓我看看我是否可以做你的建議。 – MikeB55

+0

視圖模型只是一個具有與您需要的信息相匹配的屬性的類。你提到你有一個在你的實體上返回的UserType屬性。您可以讓您的UserView類具有一個字符串而不是整數的UserType屬性。在你的控制器中,你會有將User對象轉換爲UserView對象的邏輯。當你綁定你的UserView時,UserType屬性將是正確的數據類型。 – Novus

+0

我喜歡你的想法。我一直在閱讀更多關於它的內容,並且顯然你應該使用View Models來顯示數據,而不是直接將數據庫對象傳遞給View。現在有道理。謝謝你的幫助。 – MikeB55