【问题标题】:How do I call a method on one controller from another in .NET 4 MVC如何在 .NET 4 MVC 中从另一个控制器调用一个控制器上的方法
【发布时间】:2015-07-21 17:18:48
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

您可以像使用任何其他方法一样调用它,例如

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
}

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-10-17
      • 2011-09-23
      • 2020-07-18
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2015-09-07
      相关资源
      最近更新 更多