jQueryajaxを使用したいくつかのCRUD操作でMVC3アプリケーションに取り組んでいます。
ユーザー詳細フォームをコントローラーメソッドに送信して、情報を保存します。情報が保存されたら、保存されたIDと一時データ情報を渡して詳細ページにリダイレクトし、「ユーザーが正常に保存されました」などのメッセージを表示します。
ただし、SaveUserDetailメソッドの後、コントローラーのDetailメソッドに移動することはありません。
これが私のコントローラーコードです
[HttpPost, Authorize]
public ActionResult UserDetail(string Id)
{
User user = AdminService.SelectUserByUserName(Id);
UserDetailViewModel viewModel = Mapper.Map<User, UserDetailViewModel>(user);
if (TempData["SaveStatus"] != null && TempData["SaveStatus"] == "true")
{
viewModel.InSaveMode = true;
viewModel.SaveStatus = true;
}
return View(viewModel);
}
[HttpPost, Authorize, ValidateAntiForgeryToken]
public ActionResult SaveUserDetail(UserDetailViewModel viewModel)
{
User userToSave = new User();
AdminService.UpdateUser(userToSave);
TempData["SaveStatus"] = "true";
return RedirectToAction("UserDetail", new { Id = viewModel.userId});
}
私のjQueryコード
$("#user-detail-form").submit(function (e) {
if ($(this).valid()) {
$.post('@Url.Action("SaveUserDetail")',
$(this).serialize(), function (data) {
$("#user-detail-box").html(data);
$.validator.unobtrusive.parse($("#user-detail-box"));
});
}
e.preventDefault();
});