コントローラーの httppost メソッドに投稿する次のコードがあります。
$QuickLoginSubmit.click(function (e) {
e.preventDefault();
var LoginModel = {
'UserName': $QuickEmail.val() == "" ? null : $QuickEmail.val(),
'Password': $QuickPassword.val() == "" ? null : $QuickPassword.val(),
'RememberMe': $QuickRemember.val() == "on" ? true : false
};
$.ajax({
url: '/Account/LogOnAjax',
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(LoginModel),
success: function (result) {
if (result == true) {
window.location = "/Dashboard";
} else {
$QuickLoginErrors.text(result);
}
}
});
});
問題は、$QuickEmail
または$QuickPassword
フィールドに何も入力していない場合、ajax 呼び出しで次のエラーが返されることです。
The view 'LogOnAjax' or its master was not found or no view engine supports the searched locations. The following locations were searched:<br>~/Views/Account/LogOnAjax.aspx<br>~/Views/Account/LogOnAjax.ascx<br>~/Views/Shared/LogOnAjax.aspx<br>~/Views/Shared/LogOnAjax.ascx<br>~/Views/Account/LogOnAjax.cshtml<br>~/Views/Account/LogOnAjax.vbhtml<br>~/Views/Shared/LogOnAjax.cshtml<br>~/Views/Shared/LogOnAjax.vbhtml</i>
しかし、2 つのフィールドが入力されていれば、私の ajax メソッド呼び出しは正常に機能します。これが私のhttppostメソッドです:
[HttpPost]
public ActionResult LogOnAjax(LogOnModel model)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
return Json(true);
}
else
{
return Json("The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}