我是ASP.NET MVC的新手,我遇到了一个问题.

我有一个显示我所有产品的视图,如下所示:

    @foreach (var shoe in Model)
    {
        <div class="shoeCard card bg-dark col-1 me-3 mb-3">

                @if (shoe.Gender == "Male")
                {
                    <div class="shoeCardBg bg-primary z-1"></div>
                }
                else
                {
                    <div class="shoeCardBg bg-danger z-1"></div>
                }
                <img src="@shoe.ImgUrl" class="card-img-top z-3" alt="@shoe.Name" style="position:relative;"  >
                <div class="card-body" id="card" onclick="Redirect()">
                    <h5 class="card-title text-light fw-bold">@shoe.Name</h5>
                    <p class="card-text text-secondary lh-sm">@shoe.Gender</p>
                    <p class="card-text text-secondary lh-sm">@shoe.Brand</p>
                    <h4 class="card-text text-light lh-sm">£@shoe.Price</h4>
                </div>
                    <button id="AddToBasket" onclick="AddToBasket()" value="@shoe.ID" class="btn btn-light mb-2">Add to Basket</button>
        </div>
    }

每个按钮都应该有一个不同ID的值,但是当我运行这个JS脚本时,只返回值1.

<script>
    function Redirect() {
        var ID = $("#AddToBasket").val();
        window.location.href = '@Url.Action("Product", "Home")/' + ID;
    }
</script>

有人知道这个问题吗?谢谢

推荐答案

正如在上面的注释中提到的,添加多个带有id="AddToBasket的按钮将构成无效的HTML.在使用id值时,每个元素都应该是唯一的.

为了解决这个问题并简化您的代码,我建议您使用@Html.ActionLink,并确保将其样式设置为类似于按钮的样式,方法是对其应用如下样式:

@Html.ActionLink(
   "Add to Basket",
   "Product", // Your controller action
   "Home", // Your controller
   new { ID = shoe.ID },
   new { @class = "css-button-style" }
)

这个代码将取代您的<button....代码.

如果您使用的是Bootstrap,则只需将@class值设置为btn即可将其设置为按钮样式.否则,您可能需要编写一些定制的css,以确保按钮的样式与站点的其余部分保持一致.

Asp.net相关问答推荐

Razor中的共享本地化资源文件

web.config 部分的单独配置文件

IE10 SCRIPT5009:__doPostBack未定义

jquery 1.9.0 和 modernizr 无法使用 ASP.NET Web 优化框架进行缩小

如何将配置转换应用于外部配置文件

如何在 IISExpress 上使用带有 localhost 的子域?

OnCheckedChanged 事件未触发

HttpContext.Cache 过期

我应该使用用户名还是用户 ID 来引用 ASP.NET 中经过身份验证的用户

Web Api 请求内容在操作过滤器中为空

在 C# 中将 IHtmlContent/TagBuilder 转换为字符串

在 ASP.NET 中实现 404 的最佳方法

HttpContext.Current 在 MVC 4 项目中未解决

.NET AJAX 调用 ASMX 或 ASPX 或 ASHX?

在 JavaScript 中获取当前会话值?

如何在 .NET Core 中实现 DbContext 连接字符串?

ASP.NET:在 Response.Redirect(...) 之后代码会发生什么?

哪个事件先调用?母版页 Page_Load 或内容页 Page_Load

获取 POST 变量

使用 jQuery 从 asp:RadioButtonList 读取选定的值