在动作之间传递数据
问题描述:
我试图在一个控制器中将数据从一个Action传递到另一个,但似乎这不起作用。我得到空。如何在控制器之间传递值?在动作之间传递数据
措施1
ViewData["ProductId"] = productId;
措施2
var productId = ViewData["ProductId"];//Always Null
答
你可以使用this.Session["ProductId"]
,但这种方法是不正确普遍,导致难以维护的代码是不可扩展的。更可能的是,您应该将此视图传递给您的视图以呈现为输入字段(用于表单)或用于生成URL(用于链接)。
答
您还可以使用TempData
共享数据,直到下一个请求。
答
你是怎么称呼第一个动作中的第二个动作的?如果你打电话
RedircectToAction("Acion2").
那么你可以像这样通过action属性传递参数:
RedirectToAction("Action2", new { productID= ViewBag.ProductId});
public ActionResult Action2(Guid productID)
{
}
是的,虽然TempData的通常用于近实时的用户通信信息,如“发生错误”,或'保存成功'。使用这种方法传递模型ID可以降低可伸缩性问题,但不是可维护性问题。 – PinnyM 2012-04-03 13:59:22