2016-05-11 133 views
0

正在處理由另一位開發人員構建的MVC站點,該MVC站點現在已經離開。我對MVC並不熱衷,所以如果這是一個可怕的問題,請大家道歉。ASP.NET 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」或它的主人沒有被發現或沒有視圖引擎支持搜索到的位置。

如何將消息或更好的消息傳遞給控制器​​?或者我以錯誤的方式去解決這個問題 - 完整的錯誤信息表明我應該使用共享視圖來代替?

+2

'返回RedirectToAction( 「錯誤」, 「錯誤」,新的errorMessage {= 「....」});' –

回答

2

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

在你的情況下,其

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

要通過控制器之間的值,則必須使用TempData的[]

你也可以傳遞數據,像下面的參數。

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

只需使用Redirect代替return View...這樣

return RedirectToAction("Error", "ErrorMesige"); 
相關問題