[英]ASP.NET MVC 3 - Create a dynamic object only for return
我有一個JavaScript應用程序(后端的ASP.net MVC 3與SignalR),我想只返回所需的字段(它必須是動態的)。
我使用實體框架,但我不能只選擇特定的列,因為我需要一些字段用於檢查或方法中的某些東西在客戶端不需要。
所以,目前我這樣做:
public void GetPerson(int personID)
{
// Some logic...
// person is a entity from the entity framework (Person)
dynamic p = new
{
ID = person.ID,
FirstName = person.FirstName,
LastName = person.LastName
};
Clients[Context.ConnectionId].loadPerson(p);
}
但我不確定,如果這是一個很好的做法(表演等)。 有更好的解決方案還是我還能繼續使用動態類型?
你在使用ExpandoObject
嗎?
按照你的例子,也許只使用匿名類型而不是動態類型。
var p = new
{
ID = person.ID,
FirstName = person.FirstName,
LastName = person.LastName
};
這將確保您仍然可以進行編譯時檢查。 但是,要么應該工作。 見這對匿名VS動態更多細節。
看起來很好。 如果你需要其他列然后返回它們並做你需要做的事情然后在你做的時候創建一個匿名的人並傳遞它。
無論是通過JSON還是使用SignalR將數據返回到視圖或客戶端,MVC的最佳實踐是使用強類型對象。 只需為要返回的數據創建一個ViewModel並使用它。 我通常使用[Controller] [Action] ViewModel的約定來命名這些類。 所以可能是MemberDetailsViewModel
。
其優點包括編譯時檢查,更容易的序列化,以及稍后修改時遇到的問題。
當我第一次開始使用MVC時,我完全嘗試了你的工作。 相信我,你覺得現在獲得的便利是不值得的。
如果返回的數據必須是動態的,您可能希望嘗試返回一組鍵值對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.