我目前正在使用ASP .NET MVC 3和 - 數據訪問 - 實體框架的代碼第一種方法。MVC 3 Code First ViewModel - 如何?
我讀過很多文檔,博客,stackoverflow問題等,但沒有找到一個精確的答案,以下問題,我希望有人可以幫助我。
我有包含兩個entites的一個簡單的(數據庫)模型:項目和客戶
public class Project
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Customer Customer { get; set; }
}
和...
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public int Rate { get; set; }
}
用於顯示 - 例如 - 我有一個客戶列表創建一個簡單的視圖模型:
public class ProjectListModel
{
public List<Project> Projects { get; set; }
}
在我的控制器中的代碼是:
public ActionResult ProjectList()
{
var model = new ProjectListModel()
{
Projects = db.Projects.OrderBy(x => x.Customer.Id).ToList<Project>()
};
return PartialView("_ProjectList", model);
}
所以我可以顯示項目列表甚至相應的客戶名稱。
@Html.DisplayFor(modelItem => item.Name), @Html.DisplayFor(modelItem => item.Customer.Name))
在這裏開始我的問題;-)
我不確定如果我理解正確的ViewModels的概念,我就要回我的「數據庫對象」的名單。你會怎麼做?我能想象一個新的類:
public class SingleProjectForViewModel
{
public string ProjectName {get;set;}
public string CustomerName { get;set;}
}
和改變我的ViewModel到:
public class ProjectListModel
{
public List<SingleProjectForViewModel> {get;set;}
}
...但後來在我的控制器代碼將變得很長,正好填補視圖模型(從數據庫獲取,創建SingleProjectForViewModel的實例並將此實例添加到實例化的List) - 對於這個例子來說,這將是好的,但具有更大的數據類和更復雜的視圖...!
我也讀過關於自動映射器,但我不確定是否「正確」使用這種工具來處理那種「問題」。
非常感謝您閱讀本文 - 還有更多有關回答或任何建議! :-)
謝謝你的評論。你的大寫ANY幫了很多:) ...所以我會嘗試這種方法,也許automapper。 – Jetro223