【问题标题】:Redirect in MVC controller to another controller not working在 MVC 控制器中重定向到另一个控制器不起作用
【发布时间】:2020-02-12 16:40:09
【问题描述】:

大家好,我是 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();
    }

此时调用 Index Action Result 并返回视图,但也调用来自原始控制器的详细信息视图,这会导致错误,因为没有记录。 所以我的错误视图没有被显示。 如何阻止调用原始详细信息视图? 任何帮助都会很棒 谢谢

【问题讨论】:

    标签: model-view-controller


    【解决方案1】:

    试试这个-

    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"

    【讨论】:

      【解决方案2】:

      好的,所以通常在 .net 中,您不想通过这样的重定向传递错误,而是应该使用像 Vereyon.Web FlashMessageCore 这样的库,它可以帮助您以简单明了的方式将错误重定向给用户.

      但是,如果您想这样做(完全没问题),您仍然需要在重定向到操作调用中传递错误标题和错误消息:

      return RedirectToAction("Index", "Error", new {errorTitle="error", errorMessage="message"});
      

      【讨论】:

      • 感谢您的建议,我实际上只是在构建一个用于测试的小型应用程序,因此我试图使其保持通用且尽可能简单。但这很奏效。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2010-09-30
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多