2016-05-11 8 views
0

他の開発者によって構築されたMVCサイトで作業しています。私はMVCでそれほど暑いわけではないので、これがひどい疑問であれば謝ります。ASP.NET MVC - 別のコントローラのアクションにパラメータを渡す方法

このサイトのコントローラには、ErrorControllerがあります。 \ Views \ Errorには2つの関連ビューが保持されています。私は、エラーメッセージに渡し、ユーザーに知らせることができるように、このコントローラを拡張しようとしている

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 = "..."})のようRedirect代わりにreturn View...使用;' –

答えて

2

あなたはまた、あなたが以下のようなパラメータとしてデータを渡すことができますTempDataを[]

を使用する必要がありますコントローラ間で値を渡すためにあなたのケースではその

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

RedirectToAction("ActionName","ControllerName")

を使用する必要があります。

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

ちょうどこの

return RedirectToAction("Error", "ErrorMesige"); 
関連する問題