2015-07-21 90 views
2

在asp.net MVC应用程序中,我需要生成一些文档,HTML和PDF,这些文档不会发送到用户的浏览器,而是发送通过邮件或输入我们的文件记录系统。我使用Razor生成这些文档。如何在.NET中调用另一个控制器上的方法4 MVC

当仅使用一次文档时,我只需向相关控制器添加一个方法,并将该方法添加到该控制器的视图文件夹。这工作。但是我有一份文件,必须在应用程序的两个地方生成,并在单独的控制器中执行。我用它自己的视图文件夹为这个文档创建了一个新的控制器。

我现在的问题是:如何在这个控制器上调用一个方法?搜索网络给出了很多答案,但是所有将用户重定向到这个文档,这不是我所需要的。

+0

您不应_want_自己调用控制器方法。把逻辑放在一个单独的类中,用它自己的方法来调用它。另请参见[在不同控制器上的.NET MVC调用方法](http://stackoverflow.com/questions/1296680/net-mvc-call-method-on-different-controller)。 – CodeCaster

回答

2

你可以像使用任何其他方法一样调用它。

public ActionResult DoSomething() 
{ 
    // Some code 
    var otherController = new OtherController(); // The other controller where the method is 
    otherController.CreatePdf(); // Call the method 

    // Continue with what ever else you need to do 

    return View(); // This will then return the `DoSomething` View 
} 

但个人而言,它似乎并不像这个逻辑属于控制器。你应该考虑将这个逻辑从控制器中重构出来,变成更合乎逻辑的地方。可能创建自己的文档生成类并使用它。

相关问题