1

私の AccountController のログイン アクションは、ポスト メソッド/アクションへのリダイレクトのΕ Г И І И Оで言及されている手法を使用して、「ログイン成功」メッセージを私の StatusController の成功アクションにポストします。

/// <returns>
/// If login is successful, returns a view stating such.  If the
/// login is not successful, the main Login view will be 
/// redisplayed 
/// </returns>
[HttpPost]
public ActionResult Login(logIn loginAttempt)
{
    logIn theLoginModel = new logIn();

    string username = loginAttempt.Username; 
    string password = loginAttempt.Password; 
    if (Membership.ValidateUser(username, password)) {     
       ...

       /* The login was successful.  Redirect to the LoginSucess
        * Action success */
       status theStatus = new status();
       theStatus.Message = Constants.StatusMsgs.LoginSuccess;
       StatusController SC = new StatusController();
       return SC.Success(theStatus);            
    } else {
       ...
       return View(theLoginModel);
    }                  
}          

VS2010 デバッガーを使用して、成功アクションがコード フラグメントで正しいメッセージを取得することを確認できます。

namespace usedCarLotWebApp.Controllers
{
   public class StatusController : Controller
   {
      /// <summary>
      /// Outputs a Success status message to the user
      /// </summary>
      /// <returns>
      /// A trivial view to display a Success status message to the 
      /// user
      /// </returns>
      [HttpPost]
      public ActionResult Success(status theMessage)
      {
         return View(viewName: "Success", model: theMessage);
      }
   }
}

しかし、ステータス コントローラーの成功アクションがビューをレンダリングしようとすると、予想どおり、ステータス コントローラー ディレクトリではなく、アカウント コントローラー ディレクトリからビューをレンダリングしようとします。

StatusController ディレクトリで常に成功ビューを見つけようとするように、StatusController の成功アクションを変更する方法はありますか?

4

2 に答える 2

2

コントローラー インスタンスでメソッドを呼び出そうとするのではなく、応答としてリダイレクトを返す必要があります。

return RedirectToAction("Success", "Status")

また

return RedirectToAction("Success", "Status", new { theMessage = Constants.StatusMsgs.LoginSuccess})

また、Success アクションでパラメーターを送信することもできます。

//[HttpPost] You don't need this
public ActionResult Success()
{
   return View("Success",Constants.StatusMsgs.LoginSuccess);
}
于 2013-06-01T19:57:43.797 に答える