Sayamima
Sayamima

Reputation: 225

Pass a value from one controller to another in asp.net mvc

I've been new to ASP.NET MVC. This is what I'm doing. I've 2 Controllers:Home and Customerservice. Now I have a Customer list where when I click details gets redirected to the products he acquired. So, I need to pass in the id so that the products of that customer can be displayed. So, my home consists of customer details. Now i need to pass that id to CustomerService controller ,Index action. This is what I've done in Home:

  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");

    }
}

Now I'm not sure whether I need to pass an id as parameter for index in CustomerService. SO can you please guide me in finishing this?

Upvotes: 0

Views: 5340

Answers (2)

Ethan Cabiac
Ethan Cabiac

Reputation: 4993

If you are using any Redirect (such as RedirectToAction) you can use TempData to store any parameters. The semantics have slightly changed in MVC 3 but TempData is designed to pass data between actions in a POST-Redirect-GET scenario.

Upvotes: 2

Sysyphus
Sysyphus

Reputation: 1051

Passing it as a parameter is probably your best option. Try using something like return RedirectToAction(ActionName, ControllerName, RouteValues);.

Upvotes: 1

Related Questions