【发布时间】:2018-06-16 15:44:18
【问题描述】:
伙计们。我使用 Asp.net MVC 和 C#。页面上的每个对象都有 2 个按钮。第一个按钮用于添加购物车,第二个按钮用于查看详细信息。所以这个按钮会为我模型中的每个对象生成。我想将 id 字段传递给控制器,但我总是得到 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>
}
还有我的控制器:
[HttpPost]
public ActionResult RedirectButton(int? id,string submitButton)
{
var g = Request.Form["id"];
switch(submitButton)
{
case "...":
return Details(1);
case "":
break;
}
return View();
}
【问题讨论】:
-
我想因为
<input type="hidden" name="id" value="@item.id" />在同一个表单中重复了很多次,所以第一个值被采用了。 -
最简单的尝试也是重复表单控件
-
我想如果我会使用很多表单控件,我的代码会很大很笨拙
-
@SBFrancies,我怎样才能避免它并传递正确的 id?
-
您可以使用操作链接并指定参数。
标签: c# asp.net asp.net-mvc web controller