我使用MVC 3,C#在IE9 在我的控制,我有以下2個ActionResuls是重要的:MVC C# - 需要做POST只有一次在提交
public ActionResult EditTrain(String trainid)
{
....
return PartialView(edittrain);
}
[HttpPost]
public ActionResult EditTrain(Train editrain)
{
....
DataContext.SubmitChanges();
return RedirectToAction("Edit", new { id = trainid });
}
在局部視圖,我有以下代碼:
@model Models.EditTrain
@{
ViewBag.Title = "Training";
}
<h2>Train</h2>
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "theForm" }))
{
@Html.ValidationSummary(false)
@Html.HiddenFor(model => model.ID)
<div class="display-label" style="font-weight: normal">
@Html.Label("ID:")
</div>
<div class="display-field">
@Html.DisplayFor(model => model.ID)
</div>
<div class="display-label" style="font-weight: normal">
@Html.Label("KitID:")
</div>
<div class="display-field">
@Html.DisplayFor(model => model.KitID)
</div>
<div class="editor-label">
@Html.Label("Inactive:")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Inactive)
</div>
<div class="editor-label">
@Html.Label("Inactive Date:")
</div>
<div id='datepicker' class="editor-field">
@Html.EditorFor(model => model.InactiveDate)
</div>
......
<div style="clear:left;">
<br />
<p>
<input type="submit" id="submit" value="Submit" />
</p>
</div>
}
<script type="text/javascript">
$.ajaxSetup({ cache: false });
$(document).ready(function() {
$("#submit").click(function() {
$.ajax({
type: "POST",
url: url,
data: $('#theForm').serialize()
});
$("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' + '@Model.sprid');
});
});
在上面的代碼,我喜歡上面出現的情況是,一旦用戶點擊提交,我喜歡去以下行動:
[HttpPost]
public ActionResult EditTrain(Train editrain)
,然後返回到查看和運行下面的代碼
$("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' + '@Model.sprid');
什麼,雖然發生的是,它上面的,但它運行
$("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' + '@Model.sprid');
後運行
[HttpPost]
public ActionResult EditTrain(Train editrain)
第二次。
我怎麼能阻止它的.load後要
[HttpPost]
public ActionResult EditTrain(Train editrain)
()。
感謝達林,我加了異步:假的,我相信這是現在需要的,對不對? – 2012-07-11 15:59:39
這更糟。只需刪除此AJAX呼叫。設置'async:false'會在通話過程中凍結瀏覽器,從而造成有史以來最糟糕的用戶體驗之一。如果你想使用AJAX,那麼它應該是異步的。如果沒有,只需使用標準表單提交。 – 2012-07-11 16:00:05
對不起達林,我無法跟隨你。當你說你在發出AJAX請求後立即調用.load方法,甚至沒有等待這個AJAX請求完成,我認爲異步:false會修復它。在我的情況下,我需要做一個POST,然後加載()。如果你能澄清。謝謝 – 2012-07-11 16:05:54