I learn and test how to pass custom linq results
controller code:
public ActionResult Index()
{
const int pageSize = 5;
return View(from p in db.powners
where p.petowner.StartsWith("")
orderby p.petowner.Skip(0).Take(pageSize).ToList()
select new { p.ownerid, p.petowner, p.ostreet });
}
code of the form:
@model System.Collections.Generic.IEnumerable<Mvc4test2.Models.powner>
@{
ViewBag.Title = "Index";
}
<link href="../../Content/PagedList.css" rel="stylesheet" type="text/css" />
<h2>Find owner</h2>
<p>
@using (@Html.BeginForm("index", "lookup", FormMethod.Get))
{
<b>Search</b>@Html.TextBox("search")<input type="submit" value="search" />
}
</p>
<table id="ownertable">
<tr>
<th>
@Html.DisplayNameFor(model => model.petowner)
</th>
<th>
@Html.DisplayNameFor(model => model.ostreet)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
<a href=""> @Html.DisplayFor(modelItem => item.ownerid) </a>
</td>
<td>
@Html.DisplayFor(modelItem => item.petowner)
</td>
<td>
@Html.DisplayFor(modelItem => item.ostreet)
</td>
</tr>
}
</table>
What I tried:
@model IEnumerable<Mvc4test2.Models.powner>
and
@model System.Collections.Generic.IEnumerable<Mvc4test2.Models.powner>
Get the following error:
The model item passed into the dictionary is of type 'System.Data.Objects.ObjectQuery
1 [<. > F__AnonymousType4 3[System.Int32,System.String,System.String]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [Mvc4test2.Models.powner] "'
Any idea how to pass this request for viewing and make it work properly. Of course, later I will use the variable in Skip (0). I must learn to pass it first. Thanks
source
share