Передавать значение с одного контроллера на другой в asp.net mvc

#asp.net-mvc-3

#asp.net-mvc-3

Вопрос:

Я был новичком в ASP.NET MVC. Это то, что я делаю. У меня есть 2 контроллера: Home и Customerservice. Теперь у меня есть список клиентов, в котором при нажатии «Подробности» перенаправляются на продукты, которые он приобрел. Итак, мне нужно передать идентификатор, чтобы можно было отображать продукты этого клиента. Итак, мой home состоит из сведений о клиенте. Теперь мне нужно передать этот идентификатор контроллеру CustomerService, действие Index. Это то, что я сделал в 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");

    }
}
  

Теперь я не уверен, нужно ли мне передавать id в качестве параметра для index в CustomerService. ИТАК, не могли бы вы, пожалуйста, помочь мне закончить это?

Ответ №1:

Если вы используете какой-либо Redirect (например, RedirectToAction ), вы можете использовать TempData для хранения любых параметров. Семантика немного изменилась в MVC 3, но TempData предназначена для передачи данных между действиями в сценарии получения ПОСЛЕ перенаправления.

Ответ №2:

Передача его в качестве параметра, вероятно, ваш лучший вариант. Попробуйте использовать что-то вроде return RedirectToAction(ActionName, ControllerName, RouteValues); .

Комментарии:

1. У меня есть еще одно сомнение: route values — это не что иное, как параметр, верно?

2. Если это все, что вам нужно, то да. Итак return RedirectToAction(ActionName, ControllerName, new{id=id});

3. Я получаю URL? Длина=11. Я не знаю, какова эта длина

4. Я не получаю согласно customers…. Нужно ли мне изменить метод index контроллера Customerservice?

5. Я понятия не имею. Довольно сложно комментировать код, который я не вижу, учитывая, что вы предоставили только домашний контроллер и также не показали свой обновленный код.