コントローラーへのパラメーターとして値を取得し、HTMLを5月のカートテーブルに送り返すjquery ajax関数があります。
$(document).ready(function () {
$(".Quantity").change(function () {
var ProID = $(this).attr("data");
var Quatity = $(".Quantity").val();
$.ajax({
type: "GET", url: "/Cart/UpdateValue", data: { ProID: ProID, quantity: Quatity },
success: function (data) {
$(".cart_box").html(data);
}
}
);
});
});
だから私の見解では
<tbody>
@foreach (var line in Model.Cart.Lines)
{
<tr>
<td>@line.Product.Name
</td>
<td style="text-align: center; padding: 0">@Html.DropDownList("Quantity", new SelectList(ViewBag.Items as System.Collections.IList, "Value", "Text", line.Quantity.ToString()), new { data=line.Product.ProductID ,@class="Quantity"})</td>
<td>@string.Format("{0:00,0 VNĐ}", line.Product.Price)</td>
<td>@string.Format("{0:00,0 VNĐ}", (line.Quantity * line.Product.Price))</td>
<td>Button</td>
</tr>
}
</tbody>`
ドロップダウンリストの値を変更すると、最初の行で 1 回だけ発生します。誰かが私の間違いを教えてもらえますか? 編集:これはカートインデックスビューの私のコントローラーです:
public ViewResult Index(string returnUrl)
{
List<SelectListItem> items = new List<SelectListItem>();
for (int i = 1; i <= 10; i++)
{
items.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
}
ViewBag.Items = items;
return View(new CartIndexViewModel { Cart = GetCart(), ReturnUrl = returnUrl });
}
これは、ajaxがリクエストを成功させたときのコントローラーです。
public PartialViewResult UpdateValue(int ProID, int quantity)
{
List<SelectListItem> items = new List<SelectListItem>();
for (int i = 1; i <= 10; i++)
{
items.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
}
ViewBag.Items = items;
Product product = repository.Products.FirstOrDefault(p => p.ProductID == ProID);
if (product != null)
{
GetCart().UpdateItem(product, quantity);
}
CartIndexViewModel ptview = new CartIndexViewModel {Cart=GetCart(),ReturnUrl="/"};
return PartialView(ptview);
}