#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. Я понятия не имею. Довольно сложно комментировать код, который я не вижу, учитывая, что вы предоставили только домашний контроллер и также не показали свой обновленный код.