处理由另一位开发人员构建的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");
导致错误:视图' ../错误/错误'或者找不到它的主人,或者没有视图引擎支持搜索到的位置。
如何将消息或更好的对象与一堆消息传递给控制器?或者我是以错误的方式解决这个问题 - 完整的错误消息表明我应该使用共享视图?
答案 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" });`