如何将模型实体的任何POST参数从一个Action传递到MVC 4中的另一个Action?

时间:2017-05-22 07:19:37

标签: c# asp.net-mvc asp.net-mvc-4 controller action

好吧,我在不同的控制器中有2个动作,但是工作过程几乎相同,但是它们的输入参数略有不同。除了模型之外,一个操作是接收一些POST参数,而其他操作则没有。所以我想通过不同的动作从另一个控制器调用一个动作。因此我也需要传递POST个参数。那我该怎么办?

例如,我的主要操作与ProcedureController控制器

中的相似
public virtual byte[] GenerateProcedureReports(Report model)
{
      procedureListIds = Request.Form["ProcedureMultiCheckList"].Trim();
}

点击此处我从procedureListIds收到Form request因此,如果我将任何路线重定向到此操作,我该如何发送此参数ProcedureMultiCheckList

我通过研究这些问题123尝试了这种方式。但是我没有得到任何关于这个问题的解决方案。

我已经通过这种方式尝试了ProcedureJobsController

        public virtual ActionResult JobReport(long id)
        {
            var jobInformation = _procedureJobService.Get(id);
            if (jobInformation.IsFromTablet)
            {
                Report report = new Report();
                return RedirectToAction("GenerateProcedureReports", "Procedures", new {report =report,  ProcedureMultiCheckList = jobInformation.ProcedureId });
            }
}

这里我尝试传递模型和POST参数(ProcedureMultiCheckList),但它没有作为Form request参数接收。那么,我该如何解决这个问题呢? 如果可以做到这一点,我将能够减少数千行代码。非常可怜,嗯?

2 个答案:

答案 0 :(得分:0)

我认为它应该是这样的:

public virtual ActionResult JobReport(long id)
{
    var jobInformation = _procedureJobService.Get(id);
    if (jobInformation.IsFromTablet)
    {
        Report report = new Report();
        TempData["ProcedureMultiCheckList"] = jobInformation.ProcedureId;
         return RedirectToAction("GenerateProcedureReports", "Procedures", new {report = report });
    }
}

阅读TempData:

var procedureMultiCheckList = TempData["ProcedureMultiCheckList"]

答案 1 :(得分:0)

public class HomeController: Controller
{
  public ActionResult MyAction(MyModel model)
  {
    return RedirectToAction("MySimilarAction", "About", new{model=model, age=40, name="my Name"});
  }
}


public class AboutController: Controller
{
  public ActionResult MySimilarAction(MyModel model, int age, string name)
  {

  }
}