【发布时间】:2013-01-03 18:12:56
【问题描述】:
我在我的应用程序中使用 Ajax 来更新视图而不刷新网页。
你能注意到这里http://contoso2.azurewebsites.net/Test/DoTest吗,因为我用黄色突出显示了部分视图。
但问题是,当我在项目中输入数据时(数学问题),当 Ajax 请求时,我看不到模型中的变化。
public ActionResult DoTest()
{
List<Worksheet> worksheets = null;
if (Request.IsAjaxRequest())
{
worksheets = Session["Worksheets"] as List<Worksheet>;
return PartialView("_Problems", worksheets[1]);
}
worksheets = new List<Worksheet>()
{
new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... }),
new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... })
}
Session["Worksheets"] = worksheets;
return View(worksheets[0]);
}
我正在使用Session 来恢复我的模型,但如果我在其中进行调试,我看不到模型有任何变化。当我按下继续按钮时,我的模型会更新,我该怎么做。
编辑:这在剃刀视图中包含我的 AJAX
@using (Ajax.BeginForm(
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "problemList"
}))
{
<input type="submit" value="Continue" />
}
【问题讨论】:
-
你为什么不把调用分成两个动作。一个是渲染视图的 Get 操作,另一个是根据最终用户的响应执行的 POST 操作。 Post 动作可以有一个参数 List
,ASP.NET ModelBinder 会处理剩下的! -
@frictionlesspulley 我理解的第一部分。你能举个例子来指导我吗?我对 MVC 不太熟悉,也不知道如何通过 Http 传递参数 List
-
您似乎只是在这里做一个获取,而不是将现有数据发布回服务器。您是否希望它在每次获取时更新存储在会话中的数据?
-
我想如果我要通过帖子来做这个会话没有意义..这是我的第一个选择
-
你试过返回一个数组吗? return View(worksheets[0]).toArray();
标签: asp.net ajax asp.net-mvc jquery asp.net-mvc-4