我已经使用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
动作。
答案 0 :(得分:0)
似乎问题出在return RedirectToAction("Edit", newProduct.Id);
声明中
试试这句话而不是return RedirectToAction("Edit", new{Id=newProduct.Id});
路由参数为object
类型,您传递int
。