【发布时间】:2020-04-13 16:01:04
【问题描述】:
在堆栈溢出的大量帮助之后,我能够创建 CRUD 操作并使用局部视图来呈现我的索引页面以进行搜索,但现在我迷失了如何开始分页。
为了搜索,我创建了一个 searching.cshtml 部分视图:
@model IEnumerable<SearchingMvcCrud.Models.Customer>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Department)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Department)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
然后在我的 index.cshtml 中,我创建了一个 id 为 searching 的 div,在其中我调用了 RenderPartial("_searching", Model) 并使用 Ajax jQuery 脚本来更新我的局部视图:
@using System.Web.Mvc;
@using SearchingMvcCrud.Models;
@model IEnumerable<SearchingMvcCrud.Models.Customer>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<p>
@using (Html.BeginForm("Index", "Customer", FormMethod.Get))
{
<b>Search By:</b> @Html.RadioButton("searchBy", "Name",true) <text> Name </text>
@Html.RadioButton("searchBy", "Department") <text>Department</text><br />
@Html.TextBox("search") <input type="button" value="Search" id="Search" />
}
</p>
<div id="searching">
@{Html.RenderPartial("_searching", Model); }
</div>
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script>
$(document).ready(function () {
$("#Search").click(function (e) {
var searchBy = $("input[name='searchBy']:checked").val();
var search = $("#search").val();
alert(searchBy);
debugger
$.ajax({
url: '/Customer/Searching',
type: "post",
data: { "searchBy": searchBy, "search": search },
async: true,
success: function (data) {
$("#searching").html(data);
}
})
})
})
</script>
我的控制器代码
using SearchingMvcCrud.Models;
using PagedList;
namespace SearchingMvcCrud.Controllers
{
public class CustomerController : Controller
{
// GET: Search
public PartialViewResult Searching(string searchBy, string search,)
{
DbModels dbModel = new DbModels();
{
if (searchBy == "Department")
{
return PartialView("_searching",dbModel.Customers.Where(x => x.Department == search).ToList());
}
else if (searchBy == "Name")
{
return PartialView("_searching",dbModel.Customers.Where(x => x.Name.StartsWith(search)).ToList());
}
else
{
return PartialView("_searching",dbModel.Customers.ToList());
}
}
}
// GET: Customer
public ActionResult Index()
{
DbModels dbModel = new DbModels();
{
return View(dbModel.Customers.ToList());
}
}
}
}
如何实现ajax分页?
有人告诉我也可以使用相同的方法进行分页,但是如何?
【问题讨论】:
-
如果您正在寻找分页,则将页码也作为参数发送给搜索方法。根据页码,您可以过滤列表中的范围并将其传递给查看。
-
你能分享一些代码来实现它吗?
标签: jquery ajax asp.net-mvc entity-framework asp.net-mvc-partialview