【问题标题】:Ajax.BeginForm TempData does not output after post发布后 Ajax.BeginForm TempData 不输出
【发布时间】:2012-04-14 15:44:16
【问题描述】:

我还没有找到另一个可以直接回答这个问题的问题。我的视图上有一个 Ajax.BeginForm,就像这样

@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions())){
    //Stuff
    <div id="aaaa"> @TempData["Key"] </div>
}

在操作方法中,我在我想要输出的 TempData 中设置了一条消息的值。

TempData["Key"] = "Value";
return View("View");

当我调试它时,我看到它成功地将值添加到 TempData。我还看到当它再次开始渲染视图时它仍然具有价值。但由于我无法解释的原因,它只是输出为

<div id="aaaa"> </div>

为什么我知道它有值时它不输出?

ViewData、ViewBag 和 Model 属性也是如此

【问题讨论】:

  • 在调试模式下显示的值是否也在视图中?
  • 当我在视图中放置断点时,您是否在问它是否具有价值?是的,正如我在问题中所说的那样。它在渲染视图时有值,它打断点输出值,但它输出一个空字符串。

标签: asp.net-mvc tempdata ajax.beginform


【解决方案1】:

您似乎使用的是 TempData 而不是 ViewData,这不太一样。您还提到您正在使用 Ajax.BeginForm 来调用此控制器操作。由于这是一个 AJAX 调用,请确保您在 AjaxOptions 中指定了 UpdateTargetId,以便将生成的部分注入到 DOM 的某处

这里有一些相关链接 http://davidhayden.com/blog/dave/archive/2009/05/19/ASPNETMVCAjaxBeginForm.aspx

ViewData not shown in Ajax.BeginForm

【讨论】:

  • 正如我在问题中所说,ViewData 和 ViewBag 也是如此。这不是片面的看法。我无法设置 UpdateTargetID,因为它会将整个视图注入到视图中。我知道,因为我搞砸了这些选项,它们对问题没有任何影响。
  • 其实发现问题了,MVC 3是在web.config中默认添加。至少这是我在尝试时发现的。通过删除它,这有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 2016-04-13
  • 2013-10-15
  • 1970-01-01
  • 2017-05-12
  • 2020-01-06
相关资源
最近更新 更多