我在IE9上使用MVC 3,c# 在我的控制器中,我有以下2个具有重要意义的ActionResuls:
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)
然后返回View并运行以下代码
$("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' + '@Model.sprid');
发生的事情是,它在上面运行但是在运行之后
$("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' + '@Model.sprid');
它运行
[HttpPost]
public ActionResult EditTrain(Train editrain)
第二次。
如何阻止它进入
[HttpPost]
public ActionResult EditTrain(Train editrain)
<。>在.load()之后。
答案 0 :(得分:0)
您应该从false
处理程序返回.click()
。但是看看你的代码,它有一些概念上的错误。在启动AJAX请求后立即调用.load
方法,甚至不等待此AJAX请求完成。此外,调用一个使用AJAX重定向到另一个动作的控制器动作也没什么意义。
答案 1 :(得分:0)
您可以使用 request.Abort()
$(document).ready(function () {
$("#submit").click(function () {
var request = $.ajax({
type: "POST",
url: url,
data: $('#theForm').serialize()
});
$("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' + '@Model.sprid');
request.Abort()
});
});