我正在尝试弄清楚如何使用ID参数多次发布相同的表单,具体取决于单击的按钮。我遇到的问题是表单仅在按下第一个按钮时发布,但没有其他按钮使表单发布。
@using (Html.BeginForm())
{
foreach (var p in ViewBag.Projects)
{
<form role="form" id="frm">
<input type="hidden" value="@p.projId" name="projid" />
<p>@p.name <input type="submit" value="Add user"
class="btn btn-default btn-xs" id="btn-add" /></p>
</form>
}
}
我想在按下该项目旁边列出的按钮时发布项目的ID。我的postfunction看起来像这样:
[HttpPost]
public ActionResult projects(int projid)
{
//testing
TempData["title"] = projid.ToString();
ViewBag.Projects = repo.GetAllProjectsForUser(User.Identity.Name);
return View();
}
感谢您的帮助!解决方案可能比我想象的要容易,开始让自己迷惑:)
答案 0 :(得分:0)
您有嵌套的表单,这些表单无效且不受支持。您需要删除外部Html.BeginForm()
。由于您在提交按钮中添加了重复的id
属性,您还会生成无效的html。由于您没有编辑任何值,因此您不需要隐藏输入,而是可以将projId
的值添加到路径参数
@foreach (var project in ViewBag.Projects)
{
using (Html.BeginForm(new { projid = project.projid })) // add projid as a route value
{
<p>
@project.name
<input type="submit" value="Add user" class="btn btn-default btn-xs" /> // remove the id attribute
</p>
}
}