У меня есть asp.net MVC 5 view. У меня есть следующий код на нем:Как решить эту ошибку поискового вызова в asp.net mvc 5?
@model PagedList.IPagedList<parishV3.Models.HeadsViewModel>
@using PagedList;
@using PagedList.Mvc;
<link href="~/Content/css/PagedList.css" rel="stylesheet" />
@using (Html.BeginForm("Index", "Heads", FormMethod.Get))
{
<p>
<b> Find by name:</b>@Html.RadioButton("findBy", "fname") <text>First Name</text>
@Html.RadioButton("findBy", "lname")<text>Last Name</text><br />
@Html.RadioButton("findBy", "h_no")<text>Header Number</text><br />
@Html.TextBox("Seach_Data", ViewBag.FilterValue as string, ViewBag.CurrentFilter as string)
<input type="submit" value="Find" />
</p>
}
<br />
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Index", new { page, findby = Request.QueryString["findby"], Seach_Data = Request.QueryString["Seach_Data"] }))
контроллер
public ActionResult Index(string Seach_Data, string findby, int? page, string currentFilter)
{
if (findby == "fname")
{
string query = "SELECT v.h_no as h_no, v.h_initials , v.h_id as h_id , t.titles as titles, p.Suburb as Suburb, p.flatNo as flatNo, p.flatName as flatName,v.Email as Email, v.cell as cell, v.tel_h as tel_h, v.fname as fname, p.strname as strname, p.strNo as strNo, p.City as City, LEFT(v.lname, 255) as lname from [dbo].[Heads] v, [dbo].[Addresses1] p, [dbo].[Titles] t WHERE v.[h_ID] = p.[h_id] and v.[title_id]= t.[title_id] ";
var ViewModel = db.Database.SqlQuery<HeadsViewModel>(query);
return View(ViewModel.Where(x => x.fname == Seach_Data).ToList().ToPagedList(page ?? 1, 4));
}
else if (findby == "lname")
{
string query = "SELECT v.h_no as h_no, v.h_initials , v.h_id as h_id , t.titles as titles, p.Suburb as Suburb, p.flatNo as flatNo, p.flatName as flatName,v.Email as Email, v.cell as cell, v.tel_h as tel_h, v.fname as fname, p.strname as strname, p.strNo as strNo, p.City as City, LEFT(v.lname, 255) as lname from [dbo].[Heads] v, [dbo].[Addresses1] p, [dbo].[Titles] t WHERE v.[h_ID] = p.[h_id] and v.[title_id]= t.[title_id] ";
var ViewModel = db.Database.SqlQuery<HeadsViewModel>(query);
return View(ViewModel.Where(x => x.lname == Seach_Data).ToList().ToPagedList(page ?? 1, 6));
}
else
{
string query = "SELECT v.h_no as h_no, v.h_initials , v.h_id as h_id , t.titles as titles, p.Suburb as Suburb, p.flatNo as flatNo, p.flatName as flatName,v.Email as Email, v.cell as cell, v.tel_h as tel_h, v.fname as fname, p.strname as strname, p.strNo as strNo, p.City as City, LEFT(v.lname, 255) as lname from [dbo].[Heads] v, [dbo].[Addresses1] p, [dbo].[Titles] t WHERE v.[h_ID] = p.[h_id] and v.[title_id]= t.[title_id] ";
var ViewModel = db.Database.SqlQuery<HeadsViewModel>(query);
return View(ViewModel);
}
}
Моя проблема заключается в том, что при запуске проекта он дает мне ошибку, которая говорит:
системы. InvalidOperationException: элемент модели, переданный в словарь, имеет тип System.Data.Entity.Infrastructure.DbRawSqlQuery
1[parishV3.Models.HeadsViewModel], but this dictionary requires a model item of type 'PagedList.IPagedList
1 [parishV3.Models .HeadsViewModel].»
Проверьте тип возвращаемой модели, который соответствует модели, определенной в представлении. – Venkat
показать весь код действия индекса, пожалуйста, скорее всего, вы вернете неверную модель. –
Встраиваемый sql-код в контроллере неверен на многих уровнях и является наихудшей практикой. – asawyer