Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# 更改文本框值并在Ajax调用时更新_C#_Jquery_Asp.net_Ajax - Fatal编程技术网

C# 更改文本框值并在Ajax调用时更新

C# 更改文本框值并在Ajax调用时更新,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,我在一个电子商务网站上工作,我被卡在购物车管理上。基本上在登录之前,产品都保存在会话中,我正在尝试使用Ajax更新会话中存储的产品数量。我的意思是,每当我在“要更改的数量”中写入时,更改的值应反映在“数量”列中 注意:我缩短了帖子的篇幅,并找出了调试时为什么没有触发。实际上,我无法获取关联产品的id。现在它通过了id,就是这样。现在我有另一个问题-文本框是用for循环动态创建的。我使用开发人员工具了解文本框是如何动态生成的,如下所示: For Product 1: cartDetails_0__

我在一个电子商务网站上工作,我被卡在购物车管理上。基本上在登录之前,产品都保存在会话中,我正在尝试使用Ajax更新会话中存储的产品数量。我的意思是,每当我在“要更改的数量”中写入时,更改的值应反映在“数量”列中

注意:我缩短了帖子的篇幅,并找出了调试时为什么没有触发。实际上,我无法获取关联产品的id。现在它通过了id,就是这样。现在我有另一个问题-文本框是用for循环动态创建的。我使用开发人员工具了解文本框是如何动态生成的,如下所示:

For Product 1: cartDetails_0__Quantity
For Product 2: cartDetails_1__Quantity
我想知道如何从动态生成的文本框中获取数量或值。如果我将从HTML生成的id直接放到Ajax中,那么它会更新数量。否则就不行了。我曾尝试在Ajax中使用循环,但我认为我弄错了。请查看视图

观点:

<table border="1" width="100%" cellpadding="4">
    <thead>
        <tr>
            <th style="text-align:center;">Name</th>
            <th style="text-align:center;">Price</th>
            <th style="text-align:center;">Quantity</th>
            <th style="text-align:center;">Quantity To Change</th>
        </tr>
    </thead>
    <tbody>
        @if (ViewBag.CartDetails != null)
        {
            for (int i = 0; i < cartDetails.Count(); i++)
            {
                <tr>
                    <td style="text-align: center; display:none;">@Html.DisplayFor(model => cartDetails[i].ProductId)</td>
                    <td id="ID" style="text-align: center;">@Html.DisplayFor(model => cartDetails[i].ProductName)</td>
                    <td style="text-align: center;">@Html.DisplayFor(model => cartDetails[i].Price)</td>
                    <td style="text-align: center;">@Html.DisplayFor(model => cartDetails[i].Quantity, new { @class = "quantityUpdate" })</td>
                    <td style="text-align: center;">@Html.TextBoxFor(model => cartDetails[i].Quantity, new { @class = "quantity", data_id = cartDetails[i].ProductId } )</td>
            </tr>
            }
        }
    </tbody>
</table>

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var url = '@Url.Action("UpdateCart")';
$(".quantityUpdate").change(function () {
    var id = $(this).data('id');

    var i = 0;
    $('.quantityUpdate').each(function (i, item) {
        $.post(url, { id: id, Quantity: $("#cartDetails_"+i+"__Quantity").val() }, function (response) {
            if (response) {
                $("#TotalPrice").load(window.location + " #TotalPrice");
            }
        });
    })

    alert(id);
    alert($("#cartDetails_"+i+"__Quantity").val());
});

名称
价格
量
要更改的数量
@如果(ViewBag.CartDetails!=null)
{
对于(int i=0;icartDetails[i].ProductId)
@Html.DisplayFor(模型=>cartDetails[i].ProductName)
@DisplayFor(模型=>cartDetails[i].Price)
@DisplayFor(model=>cartdestails[i].Quantity,new{@class=“quantityUpdate”})
@Html.TextBoxFor(model=>cartdestails[i].Quantity,new{@class=“Quantity”,data_id=cartdestails[i].ProductId})
}
}
var url='@url.Action(“UpdateCart”);
$(“.quantityUpdate”).change(函数(){
var id=$(this.data('id');
var i=0;
$('.quantityUpdate')。每个(函数(i,项){
$.post(url,{id:id,数量:$(“#cartdestails_u”+i+“u数量”).val(),函数(响应){
如果(答复){
$(“#TotalPrice”).load(window.location+“#TotalPrice”);
}
});
})
警报(id);
警报($(“#cartDetails_uuu”+i+“uuu Quantity”).val());
});
下面是我正在尝试的一个图像示例:


如果您想在更改.quality文本框中的值时调用ajax,那么您应该这样做:

$('.quantity').change(function(){
   //your ajax call
});

如果您想在更改.quality文本框中的值时调用ajax,那么您应该这样做:

$('.quantity').change(function(){
   //your ajax call
});
瞬变

   $('.quantity').keyup(function(){
      $('.quantityUpdate').val($('.quantity').val());
      // put code here
  });
瞬变

   $('.quantity').keyup(function(){
      $('.quantityUpdate').val($('.quantity').val());
      // put code here
  });

您正在浏览器中调试,对吗?它永远不会在VisualStudio中作为其客户端(而不是服务器端)代码命中调试器。在加载页面以注册事件时是否达到代码?另外,服务器上的post方法应该接受一个对象,而不是2个参数,除非您想将ajax改为通过url发送。Ajax中有一个方法,如果它至少在其中起作用,那么我可以理解。现在,我正在努力解决这个问题。我不是很清楚,对不起。我假设代码没有到达javascript中的ajax调用,这就是您放置断点的地方。这就是第1步,看看ajax调用是否启动。您需要从浏览器中执行此操作。您可以使用断点对其进行调试,或者查看浏览器中的网络活动(如果有)。一旦你启动了它,然后弄清楚它是否(或者为什么不)击中了控制器。我在控制器中放置了断点,看看它是否传递了特定产品的相关id和数量。但它不会启动,你需要看看它是否因为1)打错了还是2)根本没有打。您可以在浏览器中执行此操作。您可以使用浏览器中提供的调试工具在浏览器中调试javascript。您正在浏览器中调试,对吗?它永远不会在VisualStudio中作为其客户端(而不是服务器端)代码命中调试器。在加载页面以注册事件时是否达到代码?另外,服务器上的post方法应该接受一个对象,而不是2个参数,除非您想将ajax改为通过url发送。Ajax中有一个方法,如果它至少在其中起作用,那么我可以理解。现在,我正在努力解决这个问题。我不是很清楚,对不起。我假设代码没有到达javascript中的ajax调用,这就是您放置断点的地方。这就是第1步,看看ajax调用是否启动。您需要从浏览器中执行此操作。您可以使用断点对其进行调试,或者查看浏览器中的网络活动(如果有)。一旦你启动了它,然后弄清楚它是否(或者为什么不)击中了控制器。我在控制器中放置了断点,看看它是否传递了特定产品的相关id和数量。但它不会启动,你需要看看它是否因为1)打错了还是2)根本没有打。您可以在浏览器中执行此操作。您可以使用浏览器中提供的调试工具在浏览器中调试javascript。