2012-11-14 69 views
1

以下是方案。我製作了一個父模型類,在一個視圖中使用兩個模型類。這工作正常,但當我嘗試從數據庫中獲取記錄時,出現此錯誤。傳入字典的模型項目類型爲'PMS_V2.Models.Pension_info',但該字典需要一個類型爲「PMS_V2.Models.Parentmodel」的模型項目。在一個視圖中使用兩個模型類MVC3

Parentmodel.cs

namespace PMS_V2.Models { 
    // it is the class of the parent model 
    public class Parentmodel { 
    // calling of pension info 
    // for using foreach I have used ienumerable 
    public IEnumerable<Pension_info> pension_infos { get; set; } 
    //constructor 
    public Parentmodel() { 
     pension_infos = new List<Pension_info>(); 
    } 
    // class of search 
    public Search id { get; set; } // method to get id 
    } 
} 

Search.cshtml

@model PMS_V2.Models.Parentmodel 
@{ 
    ViewBag.Title = "Search"; 
} 
<h2>Search</h2> 
<p> Here Pensioner can check his records. Give your Pension_id in search query and get your details.</p> 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> </script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
    <legend>Pension_info</legend> 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.id, "Pension_no") 
    </div> 
    <div class="editor-field"> 
     @Html.TextBoxFor(model=>model.id) // getting id from user.. 
     @Html.ValidationMessageFor(model=>model.id) 
    </div> 
    <p> 
     <input type="submit" value="Search" /> 
    </p> 
    </fieldset> 
} 
<table> 
    @foreach (var item in Model.pension_infos) { 
    // model, I think the problem is here 
    var i = 0; 
    if (i == 0) { 
     i++; 
     <tr> 
     <th>Pension_id</th> 
     <th>Name</th> 
     <th>P_month</th> 
     <th>Amount</th> 
     </tr> 
    } 
    <tr> 
     <td>@Html.DisplayFor(modelItem => item.Pen_id)</td> 
     <td>@Html.DisplayFor(modelItem => item.Pensioner.Name)</td> 
     <td>@Html.DisplayFor(modelItem => item.P_month)</td> 
     <td>@Html.DisplayFor(modelItem => item.Amount)</td> 
    </tr> 
    } 
</table> 

Pension_infoController.cs

[HttpPost] 
public ActionResult Search(string id) { 
    var abc = from m in db.Pension_info 
    // Linq query to get records 
    where m.Pen_id == id 
    select m; 
    return View(abc.FirstOrDefault()); 
} 

請幫助我。 ..我用Google搜索了很多...

+0

如何使用界面? – user1746012

回答

2

錯誤很簡單,我們強烈與Parentmodel輸入你的觀點,但它傳遞類型的模型Pension_info嘗試在Parentmodel

加入 Pension_infoPension_info列表
[HttpPost] 
public ActionResult Search(string id) { 
    var abc = from m in db.Pension_info 
    // Linq query to get records 
    where m.Pen_id == id 
    select m; 
    Parentmodel _x = new Parentmodel(); 
    _x.pension_infos.ToList().Add(abc.FirstOrDefault()); 
    return View(_x); 
} 
+0

我不明白。這個.Add在我的項目中不起作用。如果出現錯誤,請修復我的代碼。 – user1746012

+0

你可以看到我的Parentmodel,我在列表中添加了Pension_info。 – user1746012

+0

我已經更新了答案 – Rafay

0

試試這個

[HttpPost] 
public ActionResult Search(string id) 
{ 
    Parentmodel p = new Parentmodel(); 
    p.pension_infos = (from m in db.Pension_info where m.Pen_id == id select m) 
         .FirstOrDefault(); 
    return view(pension_infos); 
} 
+1

解釋會很好! – gsamaras

相關問題