Asp.net mvc asp.net mvc 2在帖子之间记住我的数据(不需要)

Asp.net mvc asp.net mvc 2在帖子之间记住我的数据(不需要),asp.net-mvc,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 2,我有一个像这样的post方法 [HttpPost] public ActionResult Activatecard(ActivateCardViewModel model) 然后我做一些事情,在方法的最后我做了这些 ActivateCardViewModel m = new ActivateCardViewModel(); m.Currency = partner.DefaultCurrency; m.ActivateAmountCents = "00"; return View(m);

我有一个像这样的post方法

[HttpPost]
public ActionResult Activatecard(ActivateCardViewModel model)
然后我做一些事情,在方法的最后我做了这些

ActivateCardViewModel m = new ActivateCardViewModel();
m.Currency = partner.DefaultCurrency;
m.ActivateAmountCents = "00";
return View(m);
因此,我所期望的是,视图是用这个新的ActivateCardViewModel对象呈现的,并且填充了2个属性(并显示在视图中)。 (在get中,我也这样做,它在那里也起作用)

但是,正如你现在可能猜到的:)它没有

它会记住(显示)来自发布对象(模型)的所有内容

我希望这是故意的,有人能告诉我为什么

编辑


当我发布56美分,并且如代码所示,将00美分放在新对象中时,它仍然显示56美分,因此它看起来是正确的,忽略了我的新“m”变量

你在使用HtmlHelpers吗

如果ModelState包含与任何HtmlHelper表单字段同名的键,HtmlHelper将在使用Models值之前使用ModelState值。重置此项的唯一方法是调整ModelState条目

ModelState.Clear();

@迈克尔:你可以使用TempData字典。TempData dictionary在各种操作调用之间保存数据

此MSDN链接解释有关TempData的更多信息

是的,我确实使用了
(Html.TextBoxFor(model=>model.CardNumber)
。不,我不知道。我必须逐个字段重置,还是可以将modelstate设置为null或类似的值?听起来jfar已经解释了设计。也许比重置modelstate更好的解决方法是将RedirectToAction返回到另一个操作方法,该方法返回带有默认m的视图你想要什么?是的,我想重定向到GET,但是viewdata丢失了,我想向用户显示一条简短的“yourdataissaved”消息。我不想将数据从post方法传递到GETmethod@jfar下面是如何
ModelState.Clear()
这件事让每个人都很讨厌,我发誓我每周都会回答这个问题或看到它。谢谢@Ahmad。