-2
我正在使用Session变量在用户返回到具有数据输入表单的页面时保留数据。在用户提交表单后,存储会话数据值在控制器中完成。这工作正常,但问题是,如果用户更改页面而不先发布表单,则所有数据都消失了。如何在这种情况下存储数据?可能我需要一个JavaScript来调用控制器中的Action,并通过Ajax调用传递数据以保存数据?有没有可能举一个例子来说明如何做到这一点?此外,应该在什么情况下调用?我对JavaScript很陌生,所以任何细节都很重要。贝娄是代码的一部分:(为简单起见,我省略了额外的代码,测试空,等...)如何在没有发布的页面更改之间保存数据(MVC 5)?
// 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;
为什么要后端ASP.NET MVC控制器去做这个?为什么不使用框架如何使用? –
在“用户体验”方面,我认为最好的办法是在离开时警告用户,而不是强制保存表单......有点像SO,如果你在编辑中断,你会失去它。另一个想法是使用cookie,客户端,所有的JS。 – Tallmaris
@Jason:我不知道框架是如何使用的。我所知道的是,在我看到的大多数表单中,数据在页面更改之间保持不变。 –