我有一个MVC5视图,在这个视图中我有:
@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post))
{
// My controls
<input type="submit" id="btnSubmit" class="btn btn-primary" value="Submit" />
}
我想要的是在发布到控制器之前进行ajax调用检查记录计数。
如果记录数量很高,我想留在视图上并提示用户。
除了视图仍然发布到MyAction之外,所有内容似乎都有效。我原以为“返回假”;为了防止这种情况。
为什么“返回false”没有停止向控制器发送帖子?
$("#btnSubmit").click(function (e) {
var p1= $("#Value1").val();
var p2= $("#Value2").val();
$.ajax({
type: "GET",
url: "/MyController/GetRecordCount",
data: { "param1": p1, "param2": p2 },
async: false
}).done(function (recCount) {
if (recCount> 999)
{
$(".showAdditionalInfo").show();
return false;
}
}).fail(function (xhr, status, err) {
alert(xhr.responseText);
});
});
答案 0 :(得分:1)
您的返回应该在点击处理程序本身内。现在它在AJAX回调中。
应该是这样:
$("#btnSubmit").click(function (e) {
e.preventDefault();
var p1= $("#Value1").val();
var p2= $("#Value2").val();
var doPost = true;
$.ajax({
type: "GET",
url: "/MyController/GetRecordCount",
data: { "param1": p1, "param2": p2 },
async: false
}).done(function (recCount) {
if (recCount> 999)
{
$(".showAdditionalInfo").show();
doPost = false;
}
}).fail(function (xhr, status, err) {
alert(xhr.responseText);
});
return doPost;
});
这假设ajax请求不会是异步的。一旦它出现,那就不再适用了。