【发布时间】:2014-01-28 05:10:00
【问题描述】:
在 MVC 5 项目中,索引页面包含 2 个部分视图。一个输入搜索参数,另一个显示费率(通过 ajax 调用)。一切都按预期工作,并且费率视图确实显示了返回的数据。发生的情况是,如果用户转到同一项目中的另一个页面,然后返回,则费率部分视图为空,尽管其他部分视图中的搜索参数仍然存在。有没有办法保存费率数据?
// 这个脚本在索引页面中,有 2 个部分视图
<script> $(function () { $('#viewSearch').submit(function () { if ($(this).valid()) { $.ajax({ url: '/Home/GetRates', type: "POST", cache: true, dataType: 'html', data: $("#viewSearch").serialize(), success: function (data) { $('#viewRates').html(data); }, }); } return false; }); }); </script>
// 这是收视率
@model Models.Rate
<table class="table table-bordered input-sm">
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Notes)
</td>
<td>
@Html.DisplayFor(modelItem => item.Daily)
</td>
<td>
@Html.ActionLink("BOOK NOW", "Edit", new { id=item.Id })
</td>
</tr>
}
</table>
//这是控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetRates()
{
if (ModelState.IsValid)
{
// code
...
return PartialView("~/Views/Shared/Rates.cshtml", rates);
}
return PartialView("~/Home/Contact.cshtml");
}
【问题讨论】:
-
如果搜索结果保持不变,只需重新加载 document.ready 上的部分
-
是的,正如马特建议的那样,只需在 document.ready 上再次调用 AJAX(因为您已经有了搜索数据)
-
数据并不像我想象的那样持久。它仅在我将数据存储在 Session 中后才起作用,而不是原来的 ViewBag。
-
完成,非常感谢:)
-
@BenJunior 让我知道我是否可以在答案中添加任何其他内容,以便为未来的访问者改进它
标签: c# jquery ajax asp.net-mvc asp.net-mvc-4