gpt4 book ai didi

c# - Controller 中 id 的值始终相同

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:40 25 4
gpt4 key购买 nike

伙计们。我使用 Asp.net MVC 和 C#。页面上的每个对象都有 2 个按钮。第一个按钮用于添加到购物车,第二个按钮用于查看详细信息。所以这个按钮为我模型中的每个对象生成。我想将 id 字段传递给 Controller ​​,但我总是得到 id = 1。我如何传递正确的 ID?谁能解释一下?

这是表格:

@model IEnumerable<StickerOn.Models.Sticker>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("RedirectButton", "Sticker", FormMethod.Post))
{
<div style="margin-left:50px">
<div class="body-content">
@for (int i = 0; i < Model.Count() - 1; i++)
{
<div class="row">
@foreach (var item in Model)
{
<div class="col-md-4">
<div class="thumbnail">
<img src="@item.ImgToReprs" alt="..." width="200" height="100">
<div class="caption">
<h3>@item.Name</h3>
@Html.DisplayFor(m => item.id)
<input type="hidden" name="id" value="@item.id" />
<p><button type="submit" id="@item.id" name="submitButton" class="btn btn-success"><i class="glyphicon glyphicon-shopping-cart"></i></button><input type="submit" name="submitButton" class="btn btn-default" value="..." /></p>
</div>
</div>
</div>
}
</div>
}
</div>
</div>
}

还有我的 Controller :

[HttpPost]
public ActionResult RedirectButton(int? id,string submitButton)
{
var g = Request.Form["id"];
switch(submitButton)
{
case "...":
return Details(1);
case "":
break;
}
return View();
}

最佳答案

您的问题是,在每个循环中,您都在创建一个名为“id”的控件,并且在提交表单时,第一个值中的值被拾取。我看到了几个选项。

一个选择是在每个循环中创建一个新表单:

@foreach (var item in Model)
{
@using (Html.BeginForm("ActionName", "ControllerName"))
{
<div class="col-md-4">
<div class="thumbnail">
<img src="@item.ImgToReprs" alt="..." width="200" height="100">
<div class="caption">
<h3>@item.Name</h3>
@Html.DisplayFor(m => item.id)
<input type="hidden" name="id" value="@item.id" />
<p><button type="submit" id="@item.id" name="submitButton" class="btn btn-success"><i class="glyphicon glyphicon-shopping-cart"></i></button><input type="submit" name="submitButton" class="btn btn-default" value="..." /></p>
</div>
</div>
</div>
}
}

另一种选择是使用操作链接而不是表单提交。这些可能看起来像:

@ActionLink("Text", "ActionName", ("ControllerName",) new { id=item.id }, new { @class="btn" })

第三种方法可以让您轻松保持当前的样式:

<a href="@Url.Action("Action","Controller", new {id=item.id })"><i class="glyphicon glyphicon-shopping-cart"></i></a>

<input type="button" onclick="location.href='@Url.Action("Action","Controller", new {id=item.id })';" value="..." />

关于c# - Controller 中 id 的值始终相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com