C# ViewModel在第二篇jQueryAjax文章中为空
我有一个页面,每个订单有一个表格。每个订单有多个项目。此外,每个表单都有一个锚定标记,用于执行jQuery Ajax post。此帖子将订单标记为已发货,并将orderID返回到视图中。post成功后,我将删除与刚刚标记为shipped的订单关联的表单。这一切都很好。问题就从这里开始。当我在列表中为第二个订单单击MarkasShipped时,ViewModel将作为null传递给控制器。我注意到,我的js代码在点击锚标记时仍在提取orderID。如有任何建议,将不胜感激!我要把头发拔出来 以下是我的javascript:C# ViewModel在第二篇jQueryAjax文章中为空,c#,jquery,asp.net-mvc,razor,C#,Jquery,Asp.net Mvc,Razor,我有一个页面,每个订单有一个表格。每个订单有多个项目。此外,每个表单都有一个锚定标记,用于执行jQuery Ajax post。此帖子将订单标记为已发货,并将orderID返回到视图中。post成功后,我将删除与刚刚标记为shipped的订单关联的表单。这一切都很好。问题就从这里开始。当我在列表中为第二个订单单击MarkasShipped时,ViewModel将作为null传递给控制器。我注意到,我的js代码在点击锚标记时仍在提取orderID。如有任何建议,将不胜感激!我要把头发拔出来 以下是
<script type="text/javascript">
$(function () {
$(".MarkAsShipped").click(function () {
var valid = true;
var orderNumber = $(this).attr("data-id");
var formID = "#" + orderNumber;
if (valid) {
$.ajax({
url: "/NeedsShipped/MarkAsShipped",
type: "POST",
data: $(formID).serialize(),
success: function (data, textStatus, jqXHR) {
// remove the form for this order
$(formID).remove();
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
}
});
});
我正在帮你调试。删除$formID。删除并重试。检查是否在第二次获取viewModel。如果是,那么问题在于remove方法。在第一个ajax调用成功返回后,在第二次单击remove链接之前,请转到浏览器并查看源代码。检查HTML标记是否正确。您的删除方法可能会损坏您的DOM。谢谢Rockstart。我注释掉了删除,它仍然在做同样的事情。你认为它与序列化有关吗?我还发现列表中的第一个顺序是唯一有效的。所以,我不能在列表中选择任何一个顺序,而且第一次就可以了。我开始认为它一定是我的HTML中的某种东西。如有其他想法,将不胜感激。谢谢
if (@Model.Count() > 1)
{
for (int i = 0; i < Model.Count(); i++)
{
using (Html.BeginForm(null, null, FormMethod.Post, new { id = @Model[i].OrderID, name = @Model[i].OrderID }))
{
<br />
<div class="roundedDivVendor">
<div id="contactInfo" style="float:left; padding-left:5px; border-right:thin solid black; width:300px;">
<span style="font-weight:bold;">Order Number: </span>
@Model[i].OrderID<br />
<span style="font-weight:bold;">Ship To:</span><br />
@Model[i].FirstName.ToString()<span> </span>@Model[i].LastName.ToString()
<br />
@Model[i].Address1
@Html.HiddenFor(m => m[i].OrderID)
<br /><br />
</div>
<div id="itemsToShip" style="padding-left:20px;">
<span style="font-weight:bold; padding-left:5px;">Items to Ship: </span><span style="padding-left:450px;">
<a href="#" class="MarkAsShipped" data-id="@Model[i].OrderID">Mark as Shipped</a></span><br />
@for (int x = 0; x < @Model[i].OrderItems.Count(); x++)
{
@Html.HiddenFor(m => @Model[i].OrderItems[x].OrderProductsID)
@Html.CheckBoxFor(m => @Model[i].OrderItems[x].isShipped)
@Model[i].OrderItems[x].ShortDescription
<br />
}
</div>
<div style="clear:left;"></div>
</div>
<br />
}
}
return Json(order.OrderID, JsonRequestBehavior.AllowGet);