How to pass custom linq request to view

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.ObjectQuery1 [<. > F__AnonymousType4 3[System.Int32,System.String,System.String]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1 [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

+4
source share
2 answers

. . Powner 3 (ownerid, petowner, ostreet), select new { p.ownerid, p.petowner, p.ostreet } .

public ActionResult Index()
{
     const int pageSize = 5;
     var model = (from p in db.powners
                 where p.petowner.StartsWith("")
                 orderby p.petowner.Skip(0).Take(pageSize) select p).ToList();
     return View(model);
}

Powner , ownerid, petowner ostreet, , 3 . :

public class PownerViewModel
{
    public int OwnerId {get;set;}     // You should modify these
    public string Petowner {get;set;} // properties types
    public string OStreet {get;set;}  // since I don't exactly know what they are
}

.. :

public ActionResult Index()
{
     const int pageSize = 5;
     var model = from p in db.powners
                 where p.petowner.StartsWith("")
                 orderby p.petowner.Skip(0).Take(pageSize)
                 select new PownerViewModel()
                 {
                     OwnerId = p.ownerid,  
                     Petowner = p.petowner,
                     OStreet = p.ostreet                          
                  };
     return View(model);
}

.. , , :

@model System.Collections.Generic.IEnumerable<PownerViewModel>

P.S. , .

+3

Index. P.

, :

?

+2

All Articles