首页>Program>source

我想在RedirectToAction中传递对象.这是我的代码:

RouteValueDictionary dict = new RouteValueDictionary();
            dict.Add("searchJob", searchJob);
            return RedirectToAction("SearchJob", "SearchJob", dict);

其中searchJob是SearchJob的实例.但是我没有关于SearchJob操作方法的数据.相反,我得到searchJob = Entity.SearchJob的查询字符串.请帮我.我在做什么错了?

最新回答
  • 2021-1-11
    1 #

    您不能将类传递给这样的重定向操作.重定向是通过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的角度来看,它将从外部获取所需的所有参数.

  • 2021-1-11
    2 #

    您可以尝试:

    return RedirectToAction("SearchJob", "SearchJob", new RouteValueDictionary(searchJob)
    

    通过 searchJob 进入 RouteValueDictionary 构造函数将分解 searchJob 反对并传递 SearchJob的每个属性 类作为顶级路由值。

    使用默认模型联编程序,将操作定义为:

    public ActionResult SearchJob(SearchJob searchJob)
    

    会收到完全补水的 SearchJob

  • 2021-1-11
    3 #

    您不能将类传递给RedirectToAction方法,如果要通过查询字符串或通过POST传递整个对象,则可以使用XML或JSON序列化对象,并在接收器控制器中反序列化对象. 如果您使用这种方法来注意序列化对象的大小。

  • 2021-1-11
    4 #

    尝试使用跨页发布,您可以确定Prevoiuse页面类型,并使用它作为对象.

  • Java Runtimeexec()
  • javascript:如何检测页面上已访问和未访问的链接?