【发布时间】:2014-02-23 02:20:41
【问题描述】:
当用户返回具有数据输入表单的页面时,我正在使用 Session 变量来保存数据。在用户提交表单后,在控制器中存储会话数据值。这很好用,但问题是如果用户更改页面而不先发布表单,所有数据都消失了。在这种情况下如何存储数据?可能我需要一个 JavaScript 来调用控制器中的 Action 并通过 Ajax 调用传递要保存的数据?是否有可能举例说明如何做到这一点?另外,在什么情况下应该调用它?我对 JavaScript 还很陌生,所以任何细节都很重要。 Bellow 是代码的一部分:(为简单起见,我省略了测试 null 等的其他代码……)
// View
<div class="row">
<div class="col-sm-3" style="background-color:peachpuff">
@{Html.RenderPartial("~/Views/Shared/ReservSearch.cshtml", Session["ReservSearchModel"] as Models.ReservSearch);}
</div>
// Controller
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetRates([Bind(Include = "DropOffLoc,DropOffDate,PickUpDate")] ReservSearch reservSearch)
{
Session["ReservSearchModel"] = reservSearch;
【问题讨论】:
-
您为什么要这样做?为什么不按照它的用途使用框架?
-
就“用户体验”而言,我相信最好的方法是在离开时警告用户,而不是强制保存表单……有点像 SO,如果你在在编辑过程中你会丢失它。另一个想法是使用cookie,客户端,所有JS。
-
@Jason:我不知道该框架的用途。我所知道的是,在我看到的大多数表单中,数据在页面更改之间保持不变。
-
@Tallmaris 也许您的应用程序更复杂。我的是一种SPA。如果用户正在填写搜索查询,但只需要在提交页面之前在“联系方式”页面中看到公司地址,则提示用户不太好。
-
看看the last answer here 它演示了如何使用文本框模糊事件来调用javascript函数。在您的情况下,您可能希望调用一个 ajax 方法,然后填充您的服务器端会话变量。
标签: javascript jquery ajax asp.net-mvc