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