[英]wrong model in partial view
我正在尝试向我的搜索页面添加分页局部视图。 我之前已将它添加到其他两页中,没有任何问题,但是突然之间,这一错误就出现了。
我收到以下错误:
System.InvalidOperationException: 'The model item passed into the dictionary is of type 'Website.Models.SearchViewModel', but this dictionary requires a model item of type 'Website.Models.Helpers.PaginationModel'.'
我的控制器
public ActionResult Index(Search currentPage, string query, int pageSize = 10, int page = 1)
{
var model = new SearchViewModel();
if (!string.IsNullOrEmpty(query))
{// searchquery is present, go for it!
var searchResults = Umbraco.TypedSearch(query, true, "MyContentSearcher");
if (searchResults != null && searchResults.Count() > 0)
{
var searchResult = SearchMapper.Map<SearchModel>(searchResults, Umbraco).OrderByDescending(x=> x.CreateDate);
// pagination logic
pageSize = currentPage.PageSize > 0 ? currentPage.PageSize : pageSize;
model.Pagination = new PaginationModel()
{
PageNumber = page,
TotalPages = (int)Math.Ceiling((double)searchResult.Count() / (double)pageSize),
Query = query
};
var skipAmount = page == 1 ? 0 : ((page - 1) * pageSize);
// skip and take amount according to pagination.
model.SearchResult = searchResult.Skip(skipAmount).Take(pageSize);
return View(model);
}
我的模特
public class PaginationModel
{
public int PageNumber { get; set; }
public int TotalPages { get; set; }
public string Query { get; set; }
}
我的视图在搜索页面上称为局部视图 :
@Html.Partial("_pagination", Model.Pagination)
我的部分观点
@model Website.Models.Helpers.PaginationModel
@if (Model.TotalPages > 1)
{
<div class="col-12 margin-top-20">
<div class="row">
<div class="col-12">
<nav aria-label="...">
<ul class="pagination">
<li class="page-item @(Model.PageNumber > 1 ? "" : "disabled")">
@if (string.IsNullOrEmpty(Model.Query))
{
<a class="page-link" href="?page=@(Model.PageNumber-1)" tabindex="-1">
<i class="fa fa-angle-left"></i>
<span class="sr-only">Previous</span>
</a>
} else{
<a class="page-link" href="?query=@(Model.Query)&page=@(Model.PageNumber-1)" tabindex="-1">
<i class="fa fa-angle-left"></i>
<span class="sr-only">Previous</span>
</a>
}
</li>
@for (int i = 1; i <= Model.TotalPages; i++)
{
<li class="page-item @(Model.PageNumber == i ? "active" : "")">
<a class="page-link" href="?page=@i">@i</a>
</li>
}
<li class="page-item @(Model.PageNumber == Model.TotalPages ? "disabled" : "")">
<a class="page-link " href="?page=@(Model.PageNumber+1)">
<i class="fa fa-angle-right"></i>
<span class="sr-only">Next</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
}
我不明白为什么它会使模型感到困惑,我清楚地在控制器中设置了模型,并且当调用局部视图时,我也只给出了分页模型而已。
我究竟做错了什么 ?
如果Model.Pagination
为null @Html.Partial("_pagination", Model.Pagination)
在您的@Html.Partial("_pagination", Model.Pagination)
,将传递Model
而不是正在发生的Model.Pagination
。
如果Model.Pagination
为null,则可能必须传递new PaginationModel()
。
在控制器中,您已经创建了SearchViewModel
的模型。 请参见以下行:
var model = new SearchViewModel();
然后,您将其传递给查看哪个是错误的。 您应该创建PaginationModel
模型,因为您的视图需要它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.