Я работаю над страницей фильтра продукта. Проблема в том, что я хочу отфильтровать страницу продукта по цвету продукта. В настоящее время я могу фильтровать по одному цвету, но когда дело доходит до нескольких, нужно проверить в базе данных с помощьювсе эти выбранные цвета. Я не знаю, как передать эти значения в качестве параметра в MVC Razor.Вот код, который я пробовал одним цветом.
<script>
$('.checked').click(function () {
if (this.checked) {
$.ajax({
type: "POST",
url: 'FilterByColor',
data: { minimum_range: $("#minid").val(), maximum_range: $("#maxid").val(), color: $(this).attr('id') }, //--> send id of checked checkbox on other page
success: function (vlist) {
$('#card-group').empty();
for (var i in vlist) {
$('#card-group').append($('<div class="col-lg-3 col-sm-6 p-0"><div class="card product-men p-3"><div class="men-thumb-item"><img src="' + vlist[i].img1 + '" id="imgfront" class="card-img-top"><div class="men-cart-pro"><div class="inner-men-cart-pro"><a href="#" id="quickview" class="link-product-add-cart">Quick View</a>/</div></div></div><!-- card body --><div class="card-body py-3 px-2"><h5 class="card-title text-capitalize" id="mname">' + vlist[i].mname + '</h5><div class="card-text d-flex justify-content-between"><p class="text-dark font-weight-bold" id="mprize">' + vlist[i].mprize + '</p><p class="line-through" id="mdprize">' + vlist[i].mdprize + '</p></div></div><!-- card footer --><div class="card-footer d-flex justify-content-end"><h3> <a href="Purchase/AddToCarts?mid=' + vlist[i].mid + ',mrate=' + vlist[i].mrate + '" class="hub-cart phub-cart btn">Add To Cart</a></h3></div></div></div>'));
}
//alert('it worked');
//alert(data);
//$('#container').html(data);
},
error: function () {
alert('it broke');
},
complete: function () {
alert('it completed');
}
});
}
});
</script>
Контроллер
public List<items> GetProductByColor(int? minimum_range, int? maximum_range,string color)
{
List<items> vlist = new List<items>();
using (SqlConnection con = new SqlConnection(constring))
{
using (SqlCommand cmd = new SqlCommand("getWproductByColor", con))
{
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
cmd.Parameters.AddWithValue("@sprize", minimum_range);
cmd.Parameters.AddWithValue("@eprize", maximum_range);
cmd.Parameters.AddWithValue("@color", color);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
var g = new items()
{
mid = Convert.ToInt32(reader["mid"]),
mname = Convert.ToString(reader["mname"]),
mcode = Convert.ToString(reader["mcode"]),
mcolor = Convert.ToString(reader["mcolor"]),
mctype = Convert.ToString(reader["mctype"]),
mdetails = Convert.ToString(reader["mdetails"]),
mtype = Convert.ToString(reader["mtype"]),
mdprize = Convert.ToString(reader["mdprize"]),
mprize = Convert.ToString(reader["mprize"]),
mdate = Convert.ToDateTime(reader["mdate"]),//DateTime.ParseExact("reader['mdate']", "ddd MMM dd yyyy", CultureInfo.InvariantCulture),
msize = Convert.ToString(reader["msize"]),
mstock = Convert.ToString(reader["mcount"]),
img1 = Convert.ToString(reader["mimg1"]),
img2 = Convert.ToString(reader["mimg2"]),
img3 = Convert.ToString(reader["mimg3"])
};
vlist.Add(g);
}
}
}
return vlist;
}
Хранимая процедура
ALTER PROCEDURE [dbo].[getWproductByColor]
@sprize int,
@eprize int,
@color char(50)
as
BEGIN
select mid,LTRIM(RTRIM(mtype))as mtype,LTRIM(RTRIM(mname))as mname,LTRIM(RTRIM(mdetails))as mdetails,LTRIM(RTRIM(mcode))as mcode,LTRIM(RTRIM(mcolor))as mcolor,msize,LTRIM(RTRIM(mctype)) as mctype,convert(date,mdate)as mdate,mdprize,mprize,mcount,mimg1,mimg2,mimg3 from [dbo].[material] where mtype='women' and (mdprize between @sprize AND @eprize)and mcolor=@color order by mdprize asc;
END