Перенаправление в MVC контроллера на другой контроллер не работает - PullRequest
1 голос
/ 12 февраля 2020

Привет всем! Я новичок в MVC, но запрограммирован раньше. Я установил контроллер ошибок, который может быть вызван при возникновении ошибки в главном контроллере. Моя цель - иметь одно представление об ошибках, которое я могу передать в соответствующих сообщениях об ошибках.

В приведенном ниже коде я вызываю контроллер ошибок для отображения представления индекса, когда из списка продуктов не возвращается ни одной записи

Вот мой главный контроллер

       public ActionResult Details(int ProductID)
    {   

        var model = db.Get(ProductID);
        if (model == null)
        {
            //return RedirectToAction("Index", "ErrorController");
           return errorController.Index("Record not Found", "The Product you are looking for is no longer available");

        }

        return View(model);

    }

И это мой контроллер ошибок, который он успешно вызывает

     public ActionResult Index(string errorTitle, string errorMessage)
    {
        ViewBag.ErrorTitle = errorTitle;
        ViewBag.ErrorMessage = errorMessage;
        return View();
    }

В данный момент вызывается результат действия индекса и возвращается представление, но также вызывается представление сведений из исходного контроллера, что вызывает ошибка, так как нет записей. Так что мой вид ошибки не отображается. Как я могу остановить исходный просмотр деталей от вызова? Любая помощь будет отличной Спасибо

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Попробуйте это-

return RedirectToAction("Index", "Error", new {
   ErrorTitle = "Record not Found",
   ErrorMessage = "The Product you are looking for is no longer available"
});

В основном вам нужно перенаправить на контроллер ошибок и передать параметры как часть маршрута. RedirectToAction принимает параметр RouteValues

Also you do not need "ErrorController", you can just use "Error"

0 голосов
/ 12 февраля 2020

Хорошо, как правило, в. net вы не хотите передавать ошибки с такими перенаправлениями, вместо этого вы должны использовать библиотеку, такую ​​как Vereyon.Web FlashMessageCore, которая поможет вам легко и быстро перенаправить ошибки пользователю. краткий путь.

Однако, если вы хотите сделать это таким образом (совершенно нормально), вам все равно нужно передать заголовок ошибки и сообщение об ошибке, как это делается при вызове redirect to action:

return RedirectToAction("Index", "Error", new {errorTitle="error", errorMessage="message"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...