ViewModel在第二个jQuery Ajax帖子上为null

时间:2014-06-28 19:45:43

标签: c# jquery asp.net-mvc razor

我有一个页面,每个"订单"。每个"订单"有多个"项目"。此外,每个表单都有一个锚标记" 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);

0 个答案:

没有答案