簡體   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