在asp.net中将值从一个控制器传递给另一个控制器mvc
问题描述:
我刚刚接触ASP.NET MVC。这就是我正在做的。我有2个控制器:主页和客户服务。 现在我有一个客户列表,当我点击详细信息时,会重定向到他所购买的产品。 因此,我需要传入ID以便可以显示该客户的产品。所以,我的家由顾客细节组成。现在我需要将该ID传递给CustomerService控制器,索引操作。这是我在首页做了:在asp.net中将值从一个控制器传递给另一个控制器mvc
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作为参数中的CustomerService指数。你能指导我完成这个吗?
答
将它作为参数传递可能是您最好的选择。尝试使用类似return RedirectToAction(ActionName, ControllerName, RouteValues);
的东西。
答
如果您使用任何Redirect
(如RedirectToAction
),则可以使用TempData
来存储任何参数。 MVC 3中的语义略有变化,但TempData
被设计为在POST-Redirect-GET场景中的动作之间传递数据。
我还有一个疑问:路由值是什么,但参数是正确的? – Sayamima 2011-06-09 02:16:12
如果这就是你需要的,那么是的。所以'返回RedirectToAction(ActionName,ControllerName,new {id = id});' – Sysyphus 2011-06-09 02:25:26
我得到的网址?长度= 11。我不知道这是什么长度 – Sayamima 2011-06-09 02:30:40