如何在同一控制器内的操作中传递变量?

时间:2014-03-08 00:00:16

标签: c# ajax asp.net-mvc asp.net-mvc-5

就是这样。

  • / Controller / ActionA / 1(项目列表(有id - 用户ID))
  • / Controller / ActionB / 2(选择项目(项目ID))
  • / Controller / ActionC / 3(更新项目,需要使用id以及项目ID)

当我从ActionA转到ActionB然后再转到ActionC时,我可以检索ActionA的URL参数,在本例中为'1',当我到达Actionc时?反之亦然?

任何帮助将不胜感激! :)

2 个答案:

答案 0 :(得分:2)

您需要在为其他操作创建的网址中提供以前的所有参数。由于Web是无状态的,因此每个请求必须包含完成该请求所需的所有信息。

@Html.ActionLink("Action B", "ActionB", 
    new{id=listItem.actionBId, actionAId = Model.Id});

然后:

public ActionResult ActionB(int id, int actionAId)
{
    ...
}

唯一可以避免这种情况的方法是,ActionB处理的项目是否与ActionA的项目有某种关联,在这种情况下,您希望从服务器端推断出该信息:

public ActionResult ActionB(int id)
{
    int actionAId = GetActionAItemByB(id).Id;
    ...
}

答案 1 :(得分:1)

这取决于你从一个动作到另一个动作的方式。标准方法是RedirectToAction()方法,has an overload to include route values

return RedirectToAction("ActionB", new { id = x, someOtherRouteValue = y });