2015-06-10 155 views
1

隨着視圖模型的發展,我們開始學習,關於使用實體框架模型顯示數據的一個項目的一半時間瞭解並不是我們應該這樣做的方式,所以我們試圖學習正確的方式,或者我認爲我們是無論如何。Viewmodel數據綁定

我有一個表稱爲數據庫中的用戶,並創建了一個ADO.net實體數據模型,我現在簡單地稱爲「MainModel」,然後創建一個名爲「MainViewModel」的新類文件。

在這個視圖模型中,我從MainModel的User表中獲取了屬性,我們希望在表中的視圖中顯示屬性以顯示每個數據庫條目。該MainViewModel代碼如下:

namespace WebApplication9.Models 
{ 
    public class MainViewModel 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Email { get; set; } 
     public string Company { get; set; } 
    } 
} 

然後我有一個名爲MainController控制器,它有一個ActionResult的指數是如下:

public ActionResult Index(MainViewModel viewModel) 
     {      
      var users = new User() 
      { 
       FirstName = viewModel.FirstName, 
       LastName = viewModel.LastName, 
       EMail = viewModel.Email, 
       Company = viewModel.Company, 
      }; 

      List<MainViewModel> viewModelList = new List<MainViewModel>(); 

      return View(viewModelList); 
     } 

到現在爲止,我不知道在哪裏去接下去,不幸的是,我讀過的所有內容都讓我更加困惑。它確實顯示了一個帶有名字,姓氏,電子郵件和公司表格標題的表格,但它不在視圖中顯示任何數據。

任何幫助將非常讚賞,因爲我們不顧一切地再次去:)

感謝

回答

1

假設這是您HttpGet行動(雖然不知道爲什麼它需要你的viewModel作爲參數?)您實際上並不與任何填充你的清單,你得從數據庫中得到它,然後將其轉化爲您的視圖模型準備顯示,類似:

public ActionResult Index(MainViewModel viewModel) 
    {      
     var users = context.Users.ToList(); //use your dbContext 

     List<MainViewModel> viewModelList = users 
      .Select(u => new MainViewModel 
      { 
       FirstName = u.FirstName, 
       LastName = u.LastName, 
       Email = u.Email, 
       Company = u.Company 
      }).ToList(); 

     return View(viewModelList); 
    } 
+0

感謝您的@Matty - 我可能是有點昏暗,但我無法找到我的DbContext被稱爲。看過MainModel.edmx之類的東西,但無法找到它。任何想法,我可以檢查它的名字? –

+0

@SouthWilts沒有probs,在你的代碼中搜索'DbContext',你會發現一個繼承自它的類,就像'public partial class YourContext:DbContext',它會被EF自動生成。 – mattytommo

+0

我能找到的最接近的是:公共部分類SWGS_DashboardEntities:的DbContext { 公共SWGS_DashboardEntities() :基地( 「NAME = SWGS_DashboardEntities」) {} 但在使用時SWGS_DashboardEntities,我們只得到.Equals和.ReferenceEquals 。 –