Дополнительно
Как вызвать действие контроллера из контроллера в MVC
Мне нужно позвонить в контроллер b действие FileUploadMsgView от контроллера и нужно передать параметр для него.
Code---its not going to the controller B's FileUploadMsgView().
In ControllerA
private void Test()
{
try
{//some codes here
ViewBag.FileUploadMsg = "File uploaded successfully.";
ViewBag.FileUploadFlag = "2";
RedirectToAction("B", "FileUploadMsgView", new { FileUploadMsg = "File uploaded successfully" });
}
In ControllerB receiving part
public ActionResult FileUploadMsgView(string FileUploadMsg)
{
return View();
}
138
9
Как @mxmissile говорит в комментарии принято отвечать, Вы должен'т нового контроллера, потому что он будет отсутствовать зависимостей создана для МОК и выиграл'т у
свойство HttpContext
.Вместо этого, вы должны получить экземпляр контроллера такой:
Контроллеры являются классами - новый и вызвать метод действия, как и любой другой член класса:
ВАР результат = новый ControllerB().FileUploadMsgView (на"некоторые строки на");
Ваш образец выглядит как псевдо-код. Вам нужно возвращение результат
RedirectToAction
:как @DLeh говорит Использовать вместо
Но, давая контроллер, контроллером контексте-это важно, особенно когда вам нужно получить доступ к пользователя объекта
,
сервер` объект, или свойство HttpContext внутри 'ребенок' контроллер.Я добавил строку кода:
или еще вы могли бы использовать систему.Веб тоже вход текущий контекст, чтобы открыть "сервер" или ранние основных объектов
NB: меня ориентируетесь в Framework версии 4.6 (Mvc5)
Пусть арбитр автоматически делать это.
Внутри контроллера:
Если кто-то ищет способы сделать это .чистая ядра я сделал это путем добавления контроллера в автозагрузку
Затем впрыскивая его в другой контроллер
Тогда просто называйте это как так
_myControllerIwantToInject.MyMethodINeed();
Dleh'ы ответ является правильным и объяснить, как получить экземпляр другой контроллер без недостающих зависимостей создана для МОК
Однако, теперь нам нужно вызвать метод из этого другого контроллера. Полный ответ будет :
Это именно то, что я искал после того, что RedirectToAction()` не прошел бы сложными объектами класса.
В качестве примера, я хочу назвать
IndexComparison
метод в контроллерLifeCycleEffectsResults
и передать его сложный объект класса с именем модели.Вот код, который не удалось:<БР />
Стоит отметить, что строки, целые числа и т. д. были пережить путешествие в этот метод контроллера, но родовые объекты список страдали от того, что напоминает с утечками памяти.
Как было рекомендовано выше, здесь'ы код Я заменил его:<БР />
Все работает, как задумано сейчас. Спасибо за лидером.
если проблема заключается в вызове. вы можете называть это, используя этот метод.