Dej*_*jas 5 asp.net-mvc asp.net-mvc-3
假设我有一个控制器:
public BController : Controller
{
public ActionResult Foo(FooViewModel vm)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
同时我在另一个控制器AController中实现一个动作,我想渲染BController.Foo传递特定模型对象的结果.所以:
public AController : Controller
{
public ActionResult Bar(BarViewModel vm)
{
FooViewModel fooVm = MakeFooVM(vm);
return ... ; // pass fooVm to BController
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在MVC中实现这一目标?
在上面的答案中错过了一步.创建控制器后,需要设置ControllerContext,以便填充控制器的Request,Response和HttpContext.只是创建控制器将导致控制器的上下文设置为空值.
public AController : Controller
{
public ActionResult Bar(BarViewModel vm)
{
FooViewModel fooVm = MakeFooVM(vm);
var bController = new BController();
bController.ControllerContext = new ControllerContext(this.ControllerContext.RequestContext, bController);
return bController.Foo(fooVm);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
public AController : Controller
{
public ActionResult Bar(BarViewModel vm)
{
FooViewModel fooVm = MakeFooVM(vm);
var bController = new BController();
return bController.Foo(fooVm);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5326 次 |
| 最近记录: |