場景:MVC2 AJAX - 根據返回的數據確定UpdateTargetId
我創建了一個應用程序MVC2登錄表單。
如何我做它:
的形式提交到驗證用戶名/密碼的MVC2行動。如果驗證失敗,則該操作返回用戶再次嘗試的表單(部分視圖)。如果它通過驗證,則該操作將返回用戶在登錄之前訪問的頁面(視圖)。
我希望發生什麼:
1 - 當表單提交,用戶成功驗證,返回的結果應該替換當前頁面(如會發生什麼,如果你不設置UpdateTargetId) 。
2 - 當提交表單並且用戶未通過驗證時,返回的結果應該替換表單(就像將UpdateTargetID設置爲表單的包含元素時發生的情況一樣)。
問題:
我可以做這兩點工作,但不是在同一時間。我可以讓它總是替換當前頁面,或者總是替換UpdateTargetId元素的內容。但我需要它能夠做或取決於用戶是否成功驗證。
我需要什麼
理想的解決方案是能夠檢查Ajax請求的結果,並決定是否使用UpdateTargetId(僅更換形式)或沒有(更換整個頁面) 。我期望它會涉及到jQuery的一些工作(假設它是可能的),但我並沒有真正用jquery那麼棒,但還沒有弄清楚如何自己做。如果不能這樣做,我也開放其他方法/解決方案,使其以類似的方式工作。
在此先感謝..
根據要求。行動的代碼。但正如我所說。這是每個mvc應用程序默認提供的標準LogOn操作。唯一的區別是它在驗證失敗時返回一個局部視圖。
[HttpPost]
[MedLife.Code.Compression.CompressFilter]
public ActionResult SignIn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return PartialView("Overlays/LoginControl", model);
}
這很好,但問題更多**我如何讓它使用UpdateTargetId或不。我要麼在ajax中設置UpdateTargetId,我不要。我如何確定是否以編程方式使用它取決於這個字符串是否像你所建議的那樣存在。 – DanielJW 2011-01-06 13:14:11
得到它的工作可接受這樣做(或至少非常類似於這種方式)。 – DanielJW 2011-01-06 15:16:44