Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ViewModel在第二篇jQueryAjax文章中为空_C#_Jquery_Asp.net Mvc_Razor - Fatal编程技术网

C# ViewModel在第二篇jQueryAjax文章中为空

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。如有任何建议,将不胜感激!我要把头发拔出来 以下是

我有一个页面,每个订单有一个表格。每个订单有多个项目。此外,每个表单都有一个锚定标记,用于执行jQuery Ajax post。此帖子将订单标记为已发货,并将orderID返回到视图中。post成功后,我将删除与刚刚标记为shipped的订单关联的表单。这一切都很好。问题就从这里开始。当我在列表中为第二个订单单击MarkasShipped时,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) {

                }
            });
        }
    });
});

我正在帮你调试。删除$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);