我在电子商务笔记本电脑上工作。所以我希望当用户在所选框中选择另一种颜色时,它将定向到该颜色的产品。所以我使用 JavaScript 来直接 url,这里是代码
$(document).on('change', '#color', function () {
var selectedRam = $('#@Model.RamId').val();
var selectedSSD = $('#@Model.Ssdid').val();
var selectedColor = $(this).val();
var url = '@Url.Action("ProductDetail", "ProductView", new { id = "selectedColor", ramId = "selectedRam", ssdId = "selectedSSD" })';
window.location.href = url;
});
控制器:
public async Task<IActionResult> ProductDetail(int? id, int ramId, int ssdId)
{
if (id == null)
{
return BadRequest();
}
var sp = await _context.ProductVariations
.Include(n => n.ProductItems.Product)
.Where(n => n.ProductItemsId == id && n.RamId == ramId && n.Ssdid == ssdId)
.FirstOrDefaultAsync();
ViewBag.Lisp = _context.ProductItems
.Include(n => n.Product.Category)
.Where(n => n.Product.CategoryId == sp.ProductItems.Product.CategoryId);
ViewBag.Color = await _context.ProductItems
.Where(n => n.ProductId == sp.ProductItems.ProductId)
.Include(n => n.Color)
.ToListAsync();
if (sp == null)
{
return NotFound();
}
return View(sp);
}
所选框中颜色的值为productItemsId 。因此,当我获得productItemsId、SsdId和RamId时,我将在数据库的productVariation表中找到该颜色的产品。但问题是当我选择另一种颜色时它不起作用。我相信我的 javacripts 是错误的。我搜索聊天 gpt 和 copilot 但还是一样。有谁知道解决办法吗。我将不胜感激任何指示。谢谢你
假设您能够正确获取这 3 个变量的值:
selectedRam
、selectedSSD
和 selectedColor
,
不幸的是,您无法将客户端代码的 JavaScript 变量值传递到服务器端代码
@Url.Action()
。
您需要使用查询参数手动构造 URL。
var url = '@Url.Action("ProductDetail", "ProductView")'
+ `/${selectedColor}?ramId=${selectedRam}&ssdId=${selectedSSD}`;