Is there a way to return an ActionResult from Controller B called from Controller A while providing a specific model to B?

前端 未结 4 749
耶瑟儿~
耶瑟儿~ 2021-01-19 01:51

Let\'s say I have a controller:

public BController : Controller
{
    public ActionResult Foo(FooViewModel vm)
    {
       ...
    }
 }

an

4条回答
  •  孤独总比滥情好
    2021-01-19 02:24

    An update to @WWC's answer that will help the target action be able to find the view it needs.

    public AController : Controller
    {
         public ActionResult Bar(BarViewModel vm)
         {
              FooViewModel fooVm = MakeFooVM(vm);
              var bController = new BController();
              var bControllerContext = new ControllerContext(this.ControllerContext.RequestContext, bController);
              // update route so action can find the (partial)view
              bControllerContext.RouteData.Values["controller"] = "B";
              bController.ControllerContext = bControllerContext;
              return bController.Foo(fooVm);
         }
    }
    

提交回复
热议问题