Ajax.BeginForm() 没有回发到控制器
Ajax.BeginForm() not posting back to the controller
我正在尝试为部分工作中保存的简单列表进行分页,但 post actionresult 从未被调用。
在调试期间,我可以看到我的按钮在 Chrome 调试器中被激活,所以我认为问题出在 $('form')
但我不确定为什么。
另外,通过 Chrome 控制台,我可以看到单击 next/previous 时页码计算正确。
我在控制器的 [HttpPost]
操作方法上有一个断点,但它从未被调用。
问题不在于后端的 C#,而是为什么表单没有首先 posted。
Ajax 和 POST 返回哪里出错了?
索引:
@model ViewModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Things</h2>
<div>
@Html.ActionLink("Create", "Create", "Things", null, new { @class = "modal-link btn btn-sm" })
<div class="Table">
<div id="thingsList">
@Html.Partial("List", Model.ThingList)
</div>
@using (Ajax.BeginForm("Index", "Things", FormMethod.Post, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "thingsList" }))
{
<input type="hidden" id="CurrentPage" value="@ViewBag.CurrentPage" />
<input type="hidden" id="PreviousPage" value="@ViewBag.PreviousPage" />
}
<input type="button" onclick="javascript: PrevBtnClick();" class="btn btn-primary" id="PrevBtn" value="Previous" />
<input type="button" onclick="javascript: NextBtnClick();" class="btn btn-primary" id="NextBtn" value="Next" />
</div>
</div>
<script type="text/javascript">
function PrevBtnClick() {
if (CalculateAndSetPage("Previous")) {
$('form').submit();
}
}
function NextBtnClick() {
if (CalculateAndSetPage("Next")) {
$('form').submit();
}
}
function CalculateAndSetPage(movingType) {
var current = parseInt($('#CurrentPage').val());
if (movingType == 'Previous') {
current--;
}
else if (movingType == 'Next') {
current++;
}
else {
alert('Something has gone wrong');
}
$('#CurrentPage').val(current);
}
</script>
它没有回发的原因是它永远不会到达 $('form')
- 这应该可以正常工作。
在 $('#CurrentPage').val(current);
下方添加 return true;
- if (CalculateAndSetPage("Previous/next"))
的 javascript 函数正在询问 yes/no(布尔值)问题,而您当前的脚本不是回答。它只有在为真时才有效。
我正在尝试为部分工作中保存的简单列表进行分页,但 post actionresult 从未被调用。
在调试期间,我可以看到我的按钮在 Chrome 调试器中被激活,所以我认为问题出在 $('form')
但我不确定为什么。
另外,通过 Chrome 控制台,我可以看到单击 next/previous 时页码计算正确。
我在控制器的 [HttpPost]
操作方法上有一个断点,但它从未被调用。
问题不在于后端的 C#,而是为什么表单没有首先 posted。
Ajax 和 POST 返回哪里出错了?
索引:
@model ViewModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Things</h2>
<div>
@Html.ActionLink("Create", "Create", "Things", null, new { @class = "modal-link btn btn-sm" })
<div class="Table">
<div id="thingsList">
@Html.Partial("List", Model.ThingList)
</div>
@using (Ajax.BeginForm("Index", "Things", FormMethod.Post, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "thingsList" }))
{
<input type="hidden" id="CurrentPage" value="@ViewBag.CurrentPage" />
<input type="hidden" id="PreviousPage" value="@ViewBag.PreviousPage" />
}
<input type="button" onclick="javascript: PrevBtnClick();" class="btn btn-primary" id="PrevBtn" value="Previous" />
<input type="button" onclick="javascript: NextBtnClick();" class="btn btn-primary" id="NextBtn" value="Next" />
</div>
</div>
<script type="text/javascript">
function PrevBtnClick() {
if (CalculateAndSetPage("Previous")) {
$('form').submit();
}
}
function NextBtnClick() {
if (CalculateAndSetPage("Next")) {
$('form').submit();
}
}
function CalculateAndSetPage(movingType) {
var current = parseInt($('#CurrentPage').val());
if (movingType == 'Previous') {
current--;
}
else if (movingType == 'Next') {
current++;
}
else {
alert('Something has gone wrong');
}
$('#CurrentPage').val(current);
}
</script>
它没有回发的原因是它永远不会到达 $('form')
- 这应该可以正常工作。
在 $('#CurrentPage').val(current);
下方添加 return true;
- if (CalculateAndSetPage("Previous/next"))
的 javascript 函数正在询问 yes/no(布尔值)问题,而您当前的脚本不是回答。它只有在为真时才有效。