ASP.NET MVC - 如何将参数传递给不同控制器上的操作

时间:2016-05-11 10:39:18

标签: c# asp.net-mvc

处理由另一位开发人员构建的MVC站点,该站点现已离开。我对MVC并不热,所以如果这是一个可怕的问题,请道歉。

在此站点的控制器中有一个ErrorController。它在\ Views \ Error中有两个相关的视图。控制器做得不多:

public class ErrorController : Controller
{
    public ActionResult NotFound()
    {
        Response.StatusCode = 404;
        return View("NotFound");
    }

    public ActionResult Error()
    {
        return View("Error");
    }
}

我试图扩展此控制器,以便传递错误消息并通知用户,但我很难理解当我打电话时如何将参数传递给它来自不同的控制器。所以,例如:

public class ManagerController : Controller
{
    public ActionResult SubmitDetails()
    {
        if (ModelState.IsValid)
        { 
            // do stuff and return a View
        }

        //if we get this far, we've got an error or an invalid state
        return View("../Error/Error");
    }
}

渲染错误视图。但是如果将它添加到ErrorController:

    public ActionResult Error(string errorMessage)
    {
        ViewBag.ErrorMessage = errorMessage;
        return View("Error");
    }

我不知道如何通过不同控制器中的动作来调用它。主题为:

的变体
return View("../Error/Error", "test error message");

导致错误:视图' ../错误/错误'或者找不到它的主人,或者没有视图引擎支持搜索到的位置。

如何将消息或更好的对象与一堆消息传递给控制器​​?或者我是以错误的方式解决这个问题 - 完整的错误消息表明我应该使用共享视图?

2 个答案:

答案 0 :(得分:3)

只需使用Redirect代替return View...,就像这样

return RedirectToAction("Error", "ErrorMesige");

答案 1 :(得分:2)

您需要使用RedirectToAction("ActionName","ControllerName")

在你的情况下

return RedirectToAction("Error", "Error");

要在控制器之间传递值,您必须使用 TempData []

您也可以将数据作为参数传递,如下所示。

return RedirectToAction("Error", "Error", new { errorMessage = "Your Error Message Here" });`