1

これがシナリオです。1 つのビューで 2 つのモデル クラスを使用する親モデル クラスを作成しました。それはうまくいきますが、データベースからレコードを取得しようとすると、このエラーが発生します。ディクショナリに渡されたモデル アイテムはタイプ 'PMS_V2.Models.Pension_info' ですが、このディクショナリにはタイプ 'PMS_V2.Models.Parentmodel' のモデル アイテムが必要です。

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());
}

助けてください...私はそれをたくさんグーグルで検索しました...

4

2 に答える 2

2

エラーは単純です。ビューを で強く入力してParentmodelいますが、タイプのモデルを渡して、 のリストに を追加Pension_infoしてみてくださいPension_infoPension_infoParentmodel

[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);
}
于 2012-11-14T08:30:23.473 に答える
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);
}
于 2015-05-20T07:19:42.380 に答える