如何在.NET 4 MVC中从另一个控制器上调用方法

时间:2015-07-21 08:46:16

标签: asp.net-mvc asp.net-mvc-4

在asp.net MVC应用程序中,我需要生成一些文档,HTML和PDF,这些文档不会发送到用户的浏览器,而是通过邮件发送或输入我们的文档日记系统。我使用Razor制作这些文件。

当文档只使用一次时,我只是向相关控制器添加一个方法,并向该控制器的视图文件夹添加视图。这有效。但是我有一个必须在应用程序中的两个位置生成的文档,在单独的控制器中实现。我为这个文档创建了一个新的控制器,它有自己的视图文件夹。

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

2 个答案:

答案 0 :(得分: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
}

但就个人而言,这个逻辑似乎并不属于控制器。您应该考虑将这个逻辑从控制器重构到更合理的位置。可能会创建自己的文档生成类并使用它。

答案 1 :(得分:1)

如果我找到了你的权利。你可以创建一个基本控制器并在那里添加方法。您可以在要调用方法的任何控制器中继承Base控制器。这里有一个链接,可能有助于向您展示Base控制器的使用。 How to wire common code from a base controller in ASP.NET MVC