我有一个页面,每个"订单"。每个"订单"有多个"项目"。此外,每个表单都有一个锚标记" Mark as Shipped"这是一个jQuery Ajax帖子。这篇文章将标记"订单"发货时将orderID返回给视图。在帖子成功后,我删除与" Order"相关联的表单。刚刚标记为已发货。这一切都很有效。这是问题的起点。当我点击"标记为已发货"对于第二个"订单"在列表中,ViewModel作为null传递给控制器。我注意到,在点击锚标记时,我的js代码仍然会获取orderID。任何建议将不胜感激!我把头发拉到这里。
这是我的javascript:
<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) {
}
});
}
});
});
每个表单都有一个项目列表。以下是我创建表单的视图部分。
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 />
}
}
在控制器中,我将OrderID作为Json返回:
return Json(order.OrderID, JsonRequestBehavior.AllowGet);