【发布时间】:2021-12-17 11:33:38
【问题描述】:
我有调用 AJAX 的按钮
<form asp-action="EditItem">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
..............
<!--<input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="@("errorMessage")"" readonly /> -->
<div class="form-group">
<label asp-for="OrderQuantity" class="control-label"></label>
<input asp-for="OrderQuantity" id="txt" class="form-control" />
<span asp-validation-for="OrderQuantity" class="text-danger"></span>
</div>
<input type="hidden" id="orderId" name="orderId" value="@Model.OrderId" />
<input type="hidden" id="inventoryorderId" name="inventoryorderId" value="@Model.InventoryOrderId" />
<input type="hidden" id="inventoryId" name="inventoryId" value="@Model.InventoryId" />
<button id="button">Update</button>
</form>
</div>
</div>
@section Scripts {
<script type="text/javascript">
$("#button").click(function () {
var orderedQuantity = $("#txt").val();
var orderId = $("#orderId").val();
var inventoryorderId = $("#inventoryorderId").val();
var inventoryId = $("#inventoryId").val();
var data = {
orderId: orderId,
inventoryorderId: inventoryorderId,
inventoryId: inventoryId,
orderedQuantity: orderedQuantity,
};
$.ajax({
type: 'POST',
url: '@Url.Action("EditItem", "Orders")',
data: data,
dataType: "json",
success: function (result) {
alert(result);
var url = '@Url.Action("Index", "Orders")';
window.location.href = url + "?custEmail=xyz@rrr.org";
},
error: function (error) {
alert(error);
}
});
});
</script>
}
我可以看到所有参数都传递给控制器动作,并且在控制器中没有看到任何问题
public async Task<JsonResult> EditItem(int? orderId, int? inventoryorderId, int? inventoryId, int? orderedQuantity)
{
var inventoryOrder = await _context.InventoryOrders
.FirstOrDefaultAsync(io => io.InventoryOrderId == inventoryorderId);
int curentOrdQuantity = inventoryOrder.OrderQuantity;
var intData = await _context.Inventories.FindAsync(inventoryId);
int availQty = intData.QuantityAvailable;
if ((int)orderedQuantity > curentOrdQuantity)
{
if (availQty < ((int)orderedQuantity - curentOrdQuantity))
{
inventoryOrder.OrderQuantity = curentOrdQuantity;
_context.Update(inventoryOrder);
await _context.SaveChangesAsync();
return Json(new { status = "NotAvailable", available = intData.QuantityAvailable });
}
else
{
//Updating the Order
inventoryOrder.OrderQuantity = (int)orderedQuantity;
_context.Update(inventoryOrder);
await _context.SaveChangesAsync();
//Updating Inventory
intData.QuantityAvailable = intData.QuantityAvailable - ((int)orderedQuantity - curentOrdQuantity);
_context.Update(intData);
await _context.SaveChangesAsync();
return Json("");
}
}
return Json("");
}
我没有在控制器中看到任何错误(控制器中的所有更新都在没有任何问题的情况下发生),但是没有执行成功/错误函数。我没有看到任何 alert() 触发成功或错误。我试图从 JsonResult 更改为 ActionResult,即使那不起作用。谁能说我在这里缺少什么。
public class Order
{
public int CustomerNumber { get; set; }
public int CustomerId { get; set; }
public int OrderId { get; set; }
public int InventoryId { get; set; }
public int InventoryOrderId { get; set; }
public string StrainId { get; set; }
public string StrainName { get; set; }
public string StrainCode { get; set; }
public string Age { get; set; }
public string Sex { get; set; }
public string Genotype { get; set; }
public int QuantityAvailable { get; set; }
public int OrderQuantity { get; set; }
public string RoomNumber { get; set; }
}
【问题讨论】:
-
由于您的
Json("")为空,因此您不应收到任何警报。 -
但是success() 中的
var url = '@Url.Action("Index", "Orders")'; window.location.href = url + "?custEmail=xyz@rrr.org";没有发生 -
另外,您能否也分享一下您的
@Model和EditItem控制器操作,以便重现它。 -
EditItem我已经在上面发布的控制器操作/方法。还添加了我的模型类 -
好的,试试解决方案,希望能解决您的问题
标签: c# jquery ajax asp.net-mvc asp.net-core