在catch块中的RedirectToAction之后,TempData为空。可能是什么原因?

时间:2014-04-22 11:39:36

标签: c# asp.net-mvc tempdata

我已经使用TempData很长时间了,并且面临着一些奇怪的问题。我有基本情景:

[HttpPost]
public ActionResult Create(ProductCreateModel newProduct)
{
    // create and save product to db

    // try upload product to external site
    try { UploadProductToEbay(newProduct); } 
    catch { 
              TempData["error"] = "error";
              return RedirectToAction("Edit", newProduct.Id);
    }
    ...
}

[HttpGet]
public ActionResult Edit(int Id)
{
    var error = TempData["error"]; // at this point temp data collection is empty and have no idea why
    ...
}

问题发生在上传失败并执行return RedirectToAction("Edit", newProduct.Id);行时。丢失临时数据值的原因可能不是很明显?

更新 当我使用

TempData["error"] = "error";
RedirectToAction(...);
catch块之外的

一切正常,临时数据值转移到Edit动作。

1 个答案:

答案 0 :(得分:0)

似乎问题出在return RedirectToAction("Edit", newProduct.Id);声明中 试试这句话而不是return RedirectToAction("Edit", new{Id=newProduct.Id});
路由参数为object类型,您传递int