在 ASP NET CORE 中选择颜色时更改产品详细信息的 Url

问题描述 投票:0回答:1

我在电子商务笔记本电脑上工作。所以我希望当用户在所选框中选择另一种颜色时,它将定向到该颜色的产品example website。所以我使用 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 color options。因此,当我获得productItemsId、SsdId和RamId时,我将在数据库的productVariation表中找到该颜色的产品。但问题是当我选择另一种颜色时它不起作用。我相信我的 javacripts 是错误的。我搜索聊天 gpt 和 copilot 但还是一样。有谁知道解决办法吗。我将不胜感激任何指示。谢谢你

javascript c# asp.net asp.net-core model-view-controller
1个回答
0
投票

假设您能够正确获取这 3 个变量的值:

selectedRam
selectedSSD
selectedColor
,

不幸的是,您无法将客户端代码的 JavaScript 变量值传递到服务器端代码

@Url.Action()

您需要使用查询参数手动构造 URL。

var url = '@Url.Action("ProductDetail", "ProductView")' 
  + `/${selectedColor}?ramId=${selectedRam}&ssdId=${selectedSSD}`;
© www.soinside.com 2019 - 2024. All rights reserved.