MVC4互聯網項目MVC 4 Ajax.beginform提交 - 導致完全回發
我使用Ajax.BeginForm做驗證回發和回發整個頁面,而不僅僅是UpdateTargetID。我查看過其他文章,並沒有找到答案。我爲測試構建了一個新的MVC4 Internet項目(VS 2012已更新爲'ASP.NET和Web Tools 2012.2')。
這裏是我的代碼
控制器
public ActionResult Index()
{
var vM = _db.Students.FirstOrDefault(); return View(vM);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(Student vM)
{
if (ModelState.IsValid)
{ //code if Model valid
return Json(new { url = Url.Action("About", "Controller") });
}
ModelState.AddModelError(string.Empty, "AJAX Post");
return PartialView("Index", vM);
}
查看
@model AJAX_Test.Models.Student
@{ ViewBag.Title = "Student"; }
<script src="~/Scripts/jquery-1.8.2.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script type="text/javascript"> var onSuccess = function (result)
{
if (result.url) { window.location.href = result.url; }
}
// when server returns JSON object containing an url property redirect the browser </script>
<h1>@ViewBag.Title</h1>
<div id="IDXForm">
@using (Ajax.BeginForm("Index", new AjaxOptions() { UpdateTargetId = "IDXForm", OnSuccess = "onSuccess", HttpMethod = "Post" }))
{
@Html.AntiForgeryToken() @Html.ValidationSummary(true)
<span>@Html.EditorFor(m => m.FirstName) @Model.EnrollmentDate.ToShortDateString()</span> <input type="submit" value="Submit" />
}
</div>
最初的觀點是:
送審後:送件後身體
的源代碼:
<div id="body">
<section class="content-wrapper main-content clear-fix">
<script src="/Scripts/jquery-1.8.2.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script type="text/javascript"> var onSuccess = function (result) { if (result.url) { window.location.href = result.url; } }
// when server returns JSON object containing an url property redirect the browser </script>
<h1>Student</h1>
<div id="IDXForm">
<form action="/" data-ajax="true" data-ajax-method="Post" data-ajax-mode="replace" data-ajax-success="onSuccess" data-ajax-update="#IDXForm" id="form0" method="post"><input name="__RequestVerificationToken" type="hidden" value="vkCszJu-fKT6zUr5ys2StOTPF6a9pZdj5k1MyaAZKo8MPweS53dUuni0C9B17NjL_GVydHa7-jI1H0F9HrYEdKxeCWq9mCeER3ebaZYLxIs1" /><span><input class="text-box single-line" id="FirstName" name="FirstName" type="text" value="Carson" /> 9/1/2005</span> <input type="submit" value="Submit" />
</form></div>
任何人都可以看到什麼是錯我的代碼?
謝謝。
1-3。正如我在OP說,從佈局打來電話,已經驗證它們加載並以正確的順序,使用jQuery 1.8.2(1.9意識到問題並避免現在),JSON代碼被註釋掉了。在IE9開發工具中看過,並且可以發現沒有錯誤。源代碼不顯示第二個「學生」。我認爲你看到我發佈的代碼沒有錯誤。將在早上看更多。 – Joe 2013-03-08 07:13:25
那麼你可以看到正在進行的AJAX調用?另外,'IE9開發工具'?真的嗎?如果您希望能夠調試您的代碼,請使用真實的網絡瀏覽器。 – 2013-03-08 07:15:28
我已更新我的帖子。腳本現在直接加載在視圖中。我確保ModelState.IsValid在調試中失敗。屏幕截圖現在顯示Chrome/Developer Tools/Network,並在提交後包含源代碼。正如你所看到的腳本正在被加載,POST正在發生,它獲得了兩個腳本。這是你所說的「AJAX調用」嗎?如果不是我如何追蹤? – Joe 2013-03-08 16:25:43