2014-09-19 78 views
0

我試圖在本頁的「使用ViewModel傳遞多個模型」部分之後向我的索引頁添加第二個模型(包含2個部分視圖作爲兩列頁面) :http://www.codeproject.com/Articles/687061/Using-Multiple-Models-in-a-View-in-ASP-NET-MVC-MMVC在一個視圖中使用父級模型的多個模型

香港專業教育學院創建了一個模型,以保持所謂MasterModel這是我想保存我的其他車型

public class MasterModel 
{ 
    public UserInfo UserInfo { get; set; } 
    public LogDataServerDBEntities LogDataServerDBEntities { get; set; } 
} 

在我的索引,_NewRequest _ExistingRequest頁我從

@model IEnumerable<TMTMonitorandCompare.Models.UserInfo> 
改變模型中的其他2

@model IEnumerable<TMTMonitorandCompare.Models.MasterModel> 

,並改變了我的數據顯示爲 「Model.UserInfo」

@if (Model.UserInfo != null) 
{ 
    foreach (var item in Model.UserInfo) 
     { 
      <tr> 
      <td> 
      <input type="checkbox" class="checks"> 
      </td> 

      <td class="modal2row" data-toggle="modal" data-id="1" data-target="#basicModal3"> 
        @Html.DisplayFor(modelItem => item.CreationDateTime) 
      </td> 

      <td class="modal2row" data-toggle="modal" data-id="1" data-target="#basicModal3"> 
       @Html.DisplayFor(modelItem => item.AppModeId) 
      </td> 

     </tr> 
     } 
} 

ControllerMethod:

[HttpGet] 
    public ActionResult Index(string filtername) 
    { 
     var filterresults = from m in db.UserInfoes 
          select m; 

     filterresults = filterresults.Where(x => x.UserCode.ToString().Contains(filtername)).OrderBy(x => x.UserCode); 
     CheckDownloaded(); 
     PopulateViewbag(); 

     return View(filterresults); 
    } 

只有現在我得到的錯誤:

錯誤1'System.Collections.Generic.IEnumerable'不包含一個'UserInfo'的定義並且沒有擴展方法'UserInfo'接受類型'System.Collections.Generic.IEnumerable'的第一個參數可以找到(你是否缺少使用指令或程序集引用?)

任何人都可以解釋對我來說,我在哪裏/出什麼問題?

+0

你能不能請張貼控制器代碼,並告訴你如何構建模型對象(MasterModel) – Thangadurai 2014-09-19 10:55:21

+0

不知道這可能是一個問題,但作爲一種實踐,它不是adviceable使用相同的類名作爲屬性名稱[public UserInfo UserInfo {get;組; }] – Thangadurai 2014-09-19 10:57:55

+1

@Baggerz,我回滾了你的編輯 - 你完全不能改變這個問題。只需在註釋中添加我要求的代碼 – 2014-09-19 11:10:27

回答

3

UserInfoMasterModel(不是集合)中的對象。我懷疑你想要的是

public class MasterModel 
{ 
    public List<UserInfo> UserInfo { get; set; } 
    .... 
} 

,並在主視圖

@model TMTMonitorandCompare.Models.MasterModel 

那麼你可以使用

foreach (var item in Model.UserInfo) 
{ 
    .... 

編輯

基於從OP其他信息,操作方法需要更改以匹配模型

[HttpGet] 
public ActionResult Index(string filtername) 
{ 
    var filterresults = from m in db.UserInfoes select m; 
    filterresults = filterresults.Where(x => x.UserCode.ToString().Contains(filtername)).OrderBy(x => x.UserCode); 
    .... 
    MasterModel model = new MasterModel(); 
    model.UserInfo = filterresults; 
    // set other properties of model as required 
    return View(model); 
} 
+0

感謝您對Stephan的幫助,在進行更改之後,Visual Studio中的錯誤消失。我還將部分視圖更改爲具有相同的@model語句,但運行解決方案時出現此錯誤: System.InvalidOperationException:傳遞到字典中的模型項類型爲'System.Data.Entity.Infrastructure。 DbQuery'1 [TMTMonitorandCompare.Models.UserInfo]'),但是這個字典需要一個'TMTMonitorandCompare.Models.MasterModel'類型的模型項。 – Baggerz 2014-09-19 11:01:41

+0

編輯你的問題,包括控制器方法 - 你似乎沒有傳遞正確的對象到視圖 - 它應該像'MasterModel model = new MasterModel(); model.UserInfo = someCollection;返回查看(模型);' – 2014-09-19 11:05:42

+0

我沒有在我的代碼中,我建立了我的上面的索引方法。 – Baggerz 2014-09-19 11:09:45

相關問題