Я новичок во всем этом, и у меня проблемы с подкачкой в приложении App.net 4.7.2 MVC.Я получаю следующую ошибку:
"Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List 1[AIAR.Models.PIAModel]', but this dictionary requires a model item of type 'PagedList.IPagedList
1 [AIAR.Models.PIAModel]'."
Я думаю, что понимаю проблему, так как я использую общий список в моем контроллере, но я просто не уверен, как решить его.Я просматривал все Googles в течение некоторого времени и просто не могу понять это.Любая помощь приветствуется.Пожалуйста, дайте мне знать, если мне нужно предоставить что-нибудь еще.
Секция контроллера:
public ActionResult ViewPIAS(string searchBy, string search,int? page)
{
ViewBag.Message = "PIA List";
var data = LoadPIAS();
List<PIAModel> PIAS = new List<PIAModel>();
foreach (var row in data)
{
PIAS.Add(new PIAModel
{
Id = row.Id,
AssetName = row.AssetName,
AssetDescription = row.AssetDescription,
Unit = row.Unit,
InformationAssetCustodian = row.InformationAssetCustodian
});
}
if (searchBy == "AssetName")
{
return View(PIAS.Where(x => x.AssetName.StartsWith(search)).ToPagedList(page ?? 1, 3).ToList());
}
else if(searchBy == "AssetDescription")
{
return View(PIAS.Where(x => x.AssetDescription.StartsWith(search)).ToPagedList(page ?? 1, 3).ToList());
}
else
return View(PIAS);
}
Вид:
@model IPagedList<AIAR.Models.PIAModel>
@using PagedList;
@using PagedList.Mvc;
@{
ViewBag.Title = "ViewPIAS";
}
<h2>ViewPIAS</h2>
<p>
@Html.ActionLink("Create New", "NewPIA")
</p>
<p>
@using (Html.BeginForm("ViewPIAS", "PIA", FormMethod.Get))
{
<div>@Html.ActionLink("Return Search Defaults", "ViewPIAS")</div>
<b>Search By:</b>
@Html.RadioButton("searchBy", "AssetName") <text>AssetName</text> @Html.RadioButton("searchBy", "AssetDescription") <text>Asset Description</text><br />
@Html.TextBox("search")<input type="submit" value="Search" />
}
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.First().Id)
</th>
<th>
@Html.DisplayNameFor(model => model.First().AssetName)
</th>
<th>
@Html.DisplayNameFor(model => model.First().AssetDescription)
</th>
<th>
@Html.DisplayNameFor(model => model.First().Unit)
</th>
<th>
@Html.DisplayNameFor(model => model.First().InformationAssetCustodian)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.AssetName)
</td>
<td>
@Html.DisplayFor(modelItem => item.AssetDescription)
</td>
<td>
@Html.DisplayFor(modelItem => item.Unit)
</td>
<td>
@Html.DisplayFor(modelItem => item.InformationAssetCustodian)
</td>
<td>
@Html.ActionLink("Edit", "EditPIA", new { id = item.Id }) |
@Html.ActionLink("Details", "ViewPIA", new { id = item.Id }) |
@Html.ActionLink("Delete", "DeletePIA", new { id = item.Id })
</td>
</tr>
}
</table>
@Html.PagedListPager(Model, page => Url.Action("ViewPIAS", new { page }))
Модель:
namespace AIAR.Models
{
public class PIAModel
{
[Display(Name = "Id")]
public int Id { get; set; }
[Display(Name = "Asset Name")]
public string AssetName { get; set; }
[Display(Name = "Asset Description")]
public string AssetDescription { get; set; }
[Display(Name = "Unit")]
public string Unit { get; set; }
[Display(Name = "Information Asset Custodian")]
public string InformationAssetCustodian { get; set; }
}
}
Благодарю вас!