我想在RedirectToAction中传递对象。这是我的代码:
RouteValueDictionary dict = new RouteValueDictionary(); dict.Add("searchJob", searchJob); return RedirectToAction("SearchJob", "SearchJob", dict);
其中searchJob是SearchJob的实例。但是我没有关于SearchJob操作方法的数据。相反,我得到searchJob = Entity.SearchJob的查询字符串。请帮我。我究竟做错了什么?
您不能将类传递给这样的重定向操作。重定向是通过URL进行的。Url是一个字符串,因此不能包含类( 将对象序列化为url确实不合逻辑 )
相反,您可以使用 TempData
TempData
TempData["searchJob"] = searchJob; return RedirectToAction ...;
并在操作中重定向
Entity.SearchJob = (Entity.SearchJob)TempData["searchJob"] ;
执行完以上代码后,TempData将不再包含searchJob。TempData通常用于单次读取。
但是我不喜欢上面的方式。如果我在您的位置并想 按名称 搜索 工作 ,则可以添加诸如
RouteValueDictionary dict = new RouteValueDictionary(); dict.Add("searchJobName", searchJob.JobName);
并通过参数接收动作
public ActionResult SearchJob(string searchJobName) { ... do something with the name }
这样,您可以获得更好的用户和HTTP友好URL,并且从Action的角度来看,它将从外部获取其所需的所有参数。这对于测试,维护等而言更好。