【发布时间】:2020-04-06 01:08:50
【问题描述】:
我正在创建一个 ASP.NET Core 3 MVC 应用程序,该应用程序除了主页选项卡外还有一个客户选项卡。在客户选项卡上有一个输入框,用户可以在其中添加搜索条件(天数)和搜索按钮。单击该按钮后,下方会显示一个客户 ID 列表(使用 jQuery 和部分视图)。当用户单击客户 ID 时,客户信息将显示在不同的页面中。但是,当我单击浏览器的后退按钮或“客户”选项卡时,添加了标准并且搜索结果消失了。
我曾尝试使用 ResponseCache 属性来保留搜索结果,但我无法使其工作。我也尝试过使用 Cache Tag Helper,但还是没有成功。有人可以帮忙吗?
客户控制器
public class CustomersController : Controller
{
private readonly DbContext _context;
public CustomersController(DbContext context)
{
_context= context;
}
public IActionResult Index()
{
return View();
}
public IActionResult DisplayCustomerIdList(string searchText)
{
List<CustomerDetailViewModel> customers = _context.GetAll().ToList();
CustomerIndexViewModel model = new CustomerIndexViewModel()
{
Customers = customers
};
return PartialView("_CustomerIdListView", model);
}
public IActionResult Detail(decimal? Id)
{
Customer customer = _context.GetCustomerById(Id);
CustomerDetailViewModel model = new CustomerDetailViewModel(customer);
return View(model);
}
}
索引.cshtml
@{
ViewData["Title"] = "Customers Page";
}
@section Scripts {
<script type="text/javascript" src="~/lib/jquery/dist/jquery.min.js"></script>
<script>
var url = '@Url.Action("DisplayCustomerIdList", "Customers")';
$('#search').click(function () {
var keyWord = $('#NumberOfDays').val();
$('#searchResults').load(url, { searchText: keyWord });
return false;
})
</script>
}
<body>
<div class="input-group mb-3 w-50">
<input type="text" class="form-control mr-2" placeholder="Number of days" autocomplete="off" id="NumberOfDays">
<button id="search" class="btn btn-outline-info mb-2">Search</button>
</div>
<div id="searchResults"></div>
</body>
_CustomerIdListView.cshtml
@model MyProject.Models.CustomerIndexViewModel
<div class="card border-info mb-3 shadow" style="width:220px; height: 625px; overflow-y: scroll;">
<div class="card-header">Customer Ids</div>
<div class="list-group">
@foreach (CustomerDetailViewModel customerdetails in Model.Customers)
{
<a asp-controller="Customers" asp-action="Detail" asp-route-id="@customerdetails.CustomerId" class="list-group-item list-group-item-action">
@customerdetails.CustomerId
</a>
}
</div>
</div>
Detail.cshtml
@model MyProject.Models.CustomerDetailViewModel
<h3>Customer Information</h3>
<ul>
<li>@Model.CustomerId</li>
<li>@Model.FullName</li>
</ul>
【问题讨论】:
标签: c# jquery caching asp.net-core-mvc partial-views