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

在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);的东西。

+0

我还有一个疑问:路由值是什么,但参数是正确的? – Sayamima 2011-06-09 02:16:12

+1

如果这就是你需要的,那么是的。所以'返回RedirectToAction(ActionName,ControllerName,new {id = id});' – Sysyphus 2011-06-09 02:25:26

+0

我得到的网址?长度= 11。我不知道这是什么长度 – Sayamima 2011-06-09 02:30:40

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