在asp.net MVC应用程序中,我需要生成一些文档,HTML和PDF,这些文档不会发送到用户的浏览器,而是通过邮件发送或输入我们的文档日记系统。我使用Razor制作这些文件。
当文档只使用一次时,我只是向相关控制器添加一个方法,并向该控制器的视图文件夹添加视图。这有效。但是我有一个必须在应用程序中的两个位置生成的文档,在单独的控制器中实现。我为这个文档创建了一个新的控制器,它有自己的视图文件夹。
我现在的问题是:如何在此控制器上调用方法?搜索网络会给出很多答案,但所有人都会将用户重定向到此文档,这不是我需要的。
答案 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。