一個登錄行動對我的AccountController的POST操作時渲染正確的觀點使用由Ε Г И І И О在Redirect to Post Method/Action提到的技術來發布「登錄成功」消息給我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);
}
}
}
但是當成功操作我的狀態的控制器嘗試呈現視圖,它會嘗試從我的AccountController目錄而不是我的StatusController目錄呈現一個視圖,因爲我期望。
有什麼方法可以修改我的StatusController的成功操作,以便它總是試圖在我的StatusController目錄中找到成功視圖?
如果我這樣做,是有辦法,我可以* *後我的狀態對象,而不是通過URL參數傳遞給它?注意:LoginSuccess項目將不會保持不變。 –
@ShawnEary是的,你仍然可以通過它作爲參數。看看RedirectToAction重載。 –
@ShawnEary我沒注意到theMessage參數有一個自定義類型。如果狀態類型具有默認構造函數和公共屬性,則模型聯編程序應該能夠將其發送到查詢字符串中。 –