I m working on an application using ASP.NET 4.0 and MVC 2.0. If it s in any way relevant, I m using VS2010.
I m running into complications with TempData. I did not write the original code, but it isn t working correctly and I m attempting to fix it. I don t have a lot of experience working with TempData and ViewData.
我的指数行动如下(现成编码):
public virtual ActionResult Index()
{
var vm = new IndexViewModel();
// some code here to set up the ViewModel
if (TempData.ContainsKey("Success"))
vm.Success = true;
return View(MVC.Controller.Views.Index, vm);
}
而我的行动如下(假体编码):
[HttpPost]
public virtual ActionResult Index(IndexViewModel vm, List<int> formData)
{
if (DoSomethingWithData(formData))
{
TempData["Success"] = true;
return RedirectToAction(MVC.Controller.ActionNames.Index);
}
TempData["Message"] = "Failed to use formData";
return View(MVC.Controller.Views.Index, vm);
}
这一观点体现了一种形式,如果是的话,就用了一种成功的信息。 成功是真实的。 如果有电文,也可发送“电文”。
我第一次来到第一页。 我输入INVALID的数据,提交......我收到错误信息所预示的形式。 (我知道这里设计不好,因为它没有回头......,而且你在复读方面经验不好,但我对此没有担心) 所有这一切都是巨大的。
www.un.org/Depts/DGACM/index_spanish.htm 当我使用评价数据库的数据时,问题就表现在。 如果我提交了有效的表格数据,那么,我收到一个预期的成功信息,但如果我复读这一页,成功的信息仍然存在。 事实上,如果我去找一个完全不同的网站,回去,成功的信息仍然存在。 由于某种原因,在改头和读后,数据仍然存在。 既有方向,也有“......现在应该有明确的时间数据?
我合理地相信,由于任何原因,我把手脚放在了定时标上,但我确信,我照像谷歌这样的东西,并直接返回到URL这一页上,似乎仍然有人居住着TempData[“Success”)。
非常清楚的是,我要么不明白一下一下一下一下一下一下一下一下,TmData究竟应该如何运作(不作保),要么是说我没有经验。
Any advice is welcome!
Thanks, Dave
[EDIT]
在发出成功信息时,这种观点实际上并没有放弃形式......它只是传达成功的信息。
这一观点大致如下:
<% if (TempData.ContainsKey("Message")) { %>
Emit message...
<% } %>
<% using (Html.BeginForm(MVC.Controller.ActionNames.Index,
MVC.Controller.Name,
FormMethod.Post,
new { id = "form"})) { %>
<% if (!Model.Success) { %>
Emit form...
<% } else { %>
Emit confirmation message...
<% } %>
<% } %>
弗朗西斯科向我指出了我所认为的“......”,但是,它却把“观点”的构造变成了欺骗......这样,它就不与这一点相抵触。 我肯定知道,TmData[`Success']仍然被设定(而不是像一味改观,使之取得成功一样),因为我已穿过该守则,并且不断采取步骤,如果说它真的说话,即便是在复读之后。