jquery - 当结果为空时,Asp.Net Core MVC ajax 部分视图渲染不为空表
问题描述
我有一个带有部分视图“_PartialList”的页面。代码:
<div class="col-md-8 col-sm-12">
<div class="card" id="listHeader">
<div class="card-header">
<h5 class="card-title">Seznam kontaktov</h5>
<label id="lbTest">test</label>
<div class="row">
<div class="col-12 form-inline">
<select id="ddlSelect" asp-items="Model.Stranke" onchange="filterData();" class="form-control"></select>
<input type="text" name="SearchString" placeholder="Išči" value="@ViewData[" CurrentFilter"]" id="tbSearch" class="form-control" />
<input value="Išči" type="button" id="btnSearch" class="btn btn-primary ml-2" onclick="filterData();" />
<div class="text-right">
<a asp-controller="Kontakti" asp-action="Add" class="btn btn-primary" role="button">Dodaj</a>
</div>
</div>
</div>
</div>
<div id="sectionList">
@{await Html.RenderPartialAsync("_PartialList", Model);}
</div>
</div>
</div>
在部分视图中,我有一个表格,其中显示了我从控制器返回的所有记录。用户可以通过@ddlSelect 和@tbSearch 过滤数据。为此,我使用以下 jquery:
function filterData() {
var sender = $(this).attr('id');
// drop down
var strSelected = "";
$('#ddlSelect option:selected').each(function () {
strSelected += $('#ddlSelect')[0].value;
});
// search text
var search = $('#tbSearch').val();
// url
var url = '/Kontakti/IndexPartial?idSelect=' + strSelected;
url += '&searchString=' + search;
// partial reload
$('#sectionList').load(url);
return false;
}
当控制器返回结果时,这很有效 - 表得到刷新。
但是,当用户使用不产生任何结果的字符串(空列表)输入搜索时,表不会刷新/清除,但仍会显示最后(成功)查询的行。
从控制器返回空列表时如何显示空表(无行)?
解决方案
显然问题出在我从这个 MS 指南中使用的 PaginatedList 中: https ://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page?view=aspnetcore-2.0
当数据源为空结果集时,它的 CreateAsync 方法返回错误。
因此,在将模型发送到我的视图之前,我只是在控制器中添加了一个检查,如下所示:
if(result.Count() == 0)
{
model.Kontakti = new PaginatedList<KontaktiDetailModel>(result.ToList(), 0, 0, pageSize);
}
else
{
model.Kontakti = await PaginatedList<KontaktiDetailModel>.CreateAsync(result.AsNoTracking(), pageNumber ?? 1, pageSize);
}
现在,当没有与用户搜索匹配的结果时,我得到一个空表。
推荐阅读
- postgresql - pq:剩余的连接槽保留给非复制超级用户和 rds_superuser 连接
- android - 我无法连接到真实设备的 ionic 3G 应用程序
- python - 如何将我的 pip 下载从 anaconda3 目录切换到 PyCharm?
- python - 如何使用 lambda 按字典中元组的值排序?
- angularjs - $window.open 带有上下文/标题
- c# - 可空的
作为参数 - python - Pandas .sort_values 未按预期排序
- swift - 如何将具有关系的 NSManagedObject 转换为 Swift 类?
- java - 如何遍历 MethodCall 对象以获取参数
- spring-mvc - 在spring mvc的@modelattribute中添加可选参数