【发布时间】:2020-09-10 05:04:14
【问题描述】:
我在电子商务网站上工作。我想根据多个复选框过滤产品。我使用ajax。它将复选框的 ID 发送到控制器。但是selected 像图片中一样计数为零。这段代码有什么问题?
阿贾克斯:
<script type="text/javascript">
$(function () {
$('.filterprod').click(function () {
var ProdID = "";
$('.checks').each(function () {
if ($(this).is(':checked')) {
ProdID += $(this).val() + ",";
}
});
var data = {};
data.Id = ProdID.slice(0, ProdID.length - 1);
$.ajax({
url: '/Shop/GetProd',
method: 'POST',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(data),
success: function (response) {
$("#Prodlist").remove();
},
error: function (err, response) {
console.log(err, response);
alert(err, response.responseText);
}
})
});
});
</script>
控制器:
[HttpPost]
public JsonResult GetProd(string Id)
{
var ids = new List<int>();
IQueryable<Product> prods = null;
if (!string.IsNullOrEmpty(Id))
{
for (int i = 0; i < Id.Split(',').Length; i++)
{
ids.Add(Convert.ToInt32(Id.Split(',')[i]));
}
prods =_context.Products.Where(t => ids.Contains(t.id));
}
else
{
prods = _context.Products.Take(5);
}
var selected = (from v in prods
select new
{
v.ProdName,
v.Price,
v.Description
}).ToList();
return Json(selected, JsonRequestBehavior.AllowGet);
}
【问题讨论】:
-
您确定
$(this).val()返回产品 ID 吗?表示值1,2是数据库中的现有ID -
非常感谢。我应该写
CategoryId而不是id。现在计数不为零。 -
你去。代码正在运行,但可以稍微重构一下:P
标签: c# asp.net entity-framework model-view-controller asp.net-ajax