繁体   English   中英

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

[英]ASP.NET MVC - how to pass parameters to actions on a different controller

正在由另一个已经离开的开发人员构建的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");

导致错误:未找到视图“ ../Error/Error”或其主视图,或者视图引擎不支持搜索到的位置。

如何将消息,或者更好的是带有一堆消息的对象传递给控制器​​? 还是我走错路了?完整的错误消息提示我应该使用共享视图?

只需使用Redirect而不是return View...就像这样

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

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

在你的情况下

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM