如何在 asp.net MVC 中使用 RedirectToAction 将模型从一个 Action 方法传递到另一个?尽管我发送了一个填充模型,但我得到的是空模型

Posted

技术标签:

【中文标题】如何在 asp.net MVC 中使用 RedirectToAction 将模型从一个 Action 方法传递到另一个?尽管我发送了一个填充模型,但我得到的是空模型【英文标题】:How to pass model from one Action method to another using RedirectToAction in asp.net MVC ? I am getting null model though I send a populated model 【发布时间】:2016-07-13 16:44:08 【问题描述】:

我有一个 JobSeekerViewModel 类。我想将它从操作方法索引发送到详细信息。但是每当我发送时,我都会得到空值。但我的模型已填充。

public class JobSeekerViewModel

    public user userJobSeeker  get; set; 

    public employee employeeJobSeeker  get; set; 
       


index(login log1)

    Return View(log1);



[HttpPost]
index (login log1) 

    JobSeekerViewModel js = new JobSeekerViewModel();
    js.userJobSeeker = log1.userJobSeeker;
    js.employeeJobSeeker = log1.employeeJobSeeker;
    return Details(js);

Details(JobSeekeerViewModel js)

     Return View(js);

【问题讨论】:

【参考方案1】:

索引

        TempData["jobSeeker"] = jobSeeker;

详情

        JobSeekerViewModel jobSeeker = (JobSeekerViewModel)TempData["jobSeeker"];

【讨论】:

【参考方案2】:

试试这个

index (JobSeekerViewModel js) 

   return RedirectToAction("Details", newmodel = js);

【讨论】:

仍然得到空值。 :( 方法接收的name参数是什么,换成我贴的模型 对不起。我的索引收到另一个模型登录。但我想将 JobSeekerViewModel 发送到详细信息。【参考方案3】:

这可能对你有帮助,我希望你明白。

Index (login log1) 

  //get your JobSeekerViewModel and then use it.

   return RedirectToAction("Details", new  model = jobSeekerViewModel );


Details(JobSeekerViewModel model) 

   return View(model);

【讨论】:

是的。我的控制器不为空。现在我遇到了一个特殊的错误。即传入字典的模型项的类型为“job_management_two.Models.JobSeekerViewModel”,但该字典需要一个类型为“job_management_two.Models.Login”的模型项 当传递的对象类型与您的 Action 或 View 预期的对象类型不同时,会发生此错误。【参考方案4】:

如果您的操作在同一个控制器中,则无需调用RedirectToAction

只需调用如下操作:

index (login log1) 

    JobSeekerViewModel js = new JobSeekerViewModel();
    js.userJobSeeker = log1.userJobSeeker;
    js.employeeJobSeeker = log1.employeeJobSeeker;
    return Details(js);

【讨论】:

【参考方案5】:

将模型从一个动作发送到另一个动作 -

在行动中设置模型:

TempData["myId"] = myIdToTransfer;

在另一个 Action 获取模型中:

String userID = TempData["myID"].ToString;

将模型从动作发送到视图

设置模型的操作:

ViewBag.myId = myIdToTransfer;

在视图中获取模型:

@html.ViewBag.myId

【讨论】:

【参考方案6】:

当您使用redirectToAction 时,控制器和视图之间不会保留数据,因此您会得到null

要么使用TempData,要么直接调用details()方法而不是redirectToAction

阅读此示例:Can we pass model as a parameter in RedirectToAction?

【讨论】:

以上是关于如何在 asp.net MVC 中使用 RedirectToAction 将模型从一个 Action 方法传递到另一个?尽管我发送了一个填充模型,但我得到的是空模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.Net MVC 6 中编辑和继续

Aspose.word在asp.net mvc中如何使用的个人总结

如何在使用 HttpClient 使用 Asp Net Web Api 的 Asp Net Mvc 中提供实时数据?

如何在 ASP.NET MVC 中使用多个表单元素

如何使用 MVC 的内容协商在 ASP.NET Core MVC 中间件中返回响应?

如何在 ASP.NET MVC 中使用路由修复 404?