在asp.net mvc中将值从一个控制器传递到另一个控制器

时间:2011-06-09 01:57:51

标签: asp.net-mvc-3

我是ASP.NET MVC的新手。这就是我正在做的事情。我有两个控制器:家庭和客户服务。  现在我有一个客户列表,当我点击详细信息被重定向到他获得的产品时。 所以,我需要传入id,以便显示该客户的产品。所以,我家包含客户详细信息。现在我需要将该id传递给CustomerService控制器,Index action。这就是我在家里所做的:

  public ActionResult Customers()
    {
        var dc = new ServicesDataContext();
        var query = (from m in dc.Customers
                     select m);


        return View(query);
    }

    public ActionResult Details(int id)
    {
        var datacontext = new ServicesDataContext();
        var serviceToUpdate = datacontext.Customers.First(m => m.CustomerId == id);


        ViewData.Model = serviceToUpdate;
       // return View();
        return Redirect("/CustomerService");

    }
    [HttpPost]
    public ActionResult Details(FormCollection form)
    {
        var id = Int32.Parse(form["CustomerID"]);
        var datacontext = new ServicesDataContext();
        var service = datacontext.Customers.First(m => m.CustomerId == id);
        return Redirect("Customers");

    }
}

现在我不确定是否需要在CustomerService中传递id作为索引的参数。你可以指导我完成这个吗?

2 个答案:

答案 0 :(得分:2)

如果您使用任何Redirect(例如RedirectToAction),则可以使用TempData存储任何参数。 MVC 3中的语义略有变化,但TempData旨在在POST-Redirect-GET场景中的操作之间传递数据。

答案 1 :(得分:1)

将其作为参数传递可能是您的最佳选择。尝试使用类似return RedirectToAction(ActionName, ControllerName, RouteValues);的内容。