在RedirectToAction中传递对象

我想在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["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的角度来看,它将从外部获取其所需的所有参数。这对于测试,维护等而言更好。

以上是 在RedirectToAction中传递对象 的全部内容, 来源链接: utcz.com/qa/420067.html

回到顶部