Кто-то должен будет исправить меня, если то, что я делаю, наносит ущерб всему жизненному циклу страницы Asp.Net / что угодно, но обязательно вы можете сделать это:
В контроллере
ViewBag.CurrentController = this;
В поле зрения
var c = ViewBag.CurrentController;
var m1 = BaseController.RenderViewToString(c, "~/Views/Test/_Partial.cshtml", null);
В моем случае у меня был базовый контроллер, который расширяют все контроллеры.В этом базовом контроллере жил статический метод RenderViewToString, и для этого требовался контроллер.Так как я решил, что мог бы просто создать новый экземпляр пустого контроллера в этот момент для c, я просто отправил его в представление в прекрасном контейнере ViewBag, который существует в мире Asp.Net MVC.По причинам, в которые я не мог сейчас войти, я не мог извлечь строку в контроллере и отправить только это обратно в представление (это было тем, что я делал раньше, до изменения требований).
Причина, по которой я это сделалэтот способ используется в других языках, таких как PHP и JS, существуют похожие простые способы передачи классов.