asp.net mvc多按钮表单
asp.net mvc multiple button form
如何制作那部分代码
<ol>
@foreach (var role in ViewBag.RolesForThisUser)
{
<li>@role <input type="hidden" name="DeleteRoleName" value="@role" /><input type="submit" value="Delete" name="action:DeleteRole" /></li>
}
</ol>
到post我需要控制什么。现在它 post 是列表中的第一个角色(无论我单击哪个按钮)。通常我为每个列表选项做多种形式,但这次在其他形式中列出。我可以将表格放入表格吗?
一切都在一个 post 形式中:
@using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<p>
Users: @Html.DropDownList("UserName", (IEnumerable<SelectListItem>)ViewBag.Users, "Select ...")
<input type="submit" value="Get roles" name="action:GetUserRoles" />
</p>
if (ViewBag.RolesForThisUser != null)
{
<hr />
<p>
<text> Role name: </text>@Html.DropDownList("RoleName", (IEnumerable<SelectListItem>)ViewBag.Roles, "Select ...")
<input type="submit" value="Add role" name="action:AddRole" />
</p>
<hr/>
<p>
<text>User roles:</text>
<ol>
@foreach (var role in ViewBag.RolesForThisUser)
{
<li>@role <input type="hidden" name="DeleteRoleName" value="@role" /><input type="submit" value="Delete" name="action:DeleteRole" /></li>
}
</ol>
</p>
}
if (ViewBag.Action != null)
{
<hr />
<p>
@ViewBag.Action
</p>
}
}
请帮忙。
谢谢,
托马斯
您不能嵌套表单,您最好使用 ajax 到 post 控制器操作,该操作具有将角色添加为表单数据或参数所需的信息。在打开表单标签中设置的提交操作,参数是手动设置的。您还可以使用 javascript 根据按钮单击更改提交时的表单属性,但使用标准输入会更容易遵循,这些标准输入会触发 ajax 调用,使用您正在查找的每一行的数据字段提交。
form.onSubmit 属性 将允许您将参数添加到表单操作中的相同操作。
button.onClick 属性 允许您构建 ajax 调用,该调用将转到特定的控制器和操作来处理您的逻辑。
问题以不同的方式解决(3 种形式 - 在 ViewBag 中传递用户名):
@using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<p>
Users: @Html.DropDownList("UserName", (IEnumerable<SelectListItem>)ViewBag.Users, "Select ...")
<input type="submit" value="Get roles" name="action:GetUserRoles" />
</p>
}
@if (ViewBag.RolesForThisUser != null)
{
<hr/>
<p>
<text>User roles:</text>
<ol>
@foreach (var role in ViewBag.RolesForThisUser)
{
using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
<li>@role
<input type="hidden" name="UserName" value="@ViewBag.User" />
<input type="hidden" name="DeleteRoleName" value="@role" />
<input type="submit" value="Delete" name="action:DeleteRole" /></li>
}
}
</ol>
</p>
}
@using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
if (ViewBag.RolesForThisUser != null)
{
<p>
<text> Role name: </text>
@Html.DropDownList("RoleName", (IEnumerable<SelectListItem>)ViewBag.Roles, "Select ...")
<input type="hidden" name="UserName" value="@ViewBag.User" />
<input type="submit" value="Add role" name="action:AddRole"/>
</p>
}
}
如何制作那部分代码
<ol>
@foreach (var role in ViewBag.RolesForThisUser)
{
<li>@role <input type="hidden" name="DeleteRoleName" value="@role" /><input type="submit" value="Delete" name="action:DeleteRole" /></li>
}
</ol>
到post我需要控制什么。现在它 post 是列表中的第一个角色(无论我单击哪个按钮)。通常我为每个列表选项做多种形式,但这次在其他形式中列出。我可以将表格放入表格吗?
一切都在一个 post 形式中:
@using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<p>
Users: @Html.DropDownList("UserName", (IEnumerable<SelectListItem>)ViewBag.Users, "Select ...")
<input type="submit" value="Get roles" name="action:GetUserRoles" />
</p>
if (ViewBag.RolesForThisUser != null)
{
<hr />
<p>
<text> Role name: </text>@Html.DropDownList("RoleName", (IEnumerable<SelectListItem>)ViewBag.Roles, "Select ...")
<input type="submit" value="Add role" name="action:AddRole" />
</p>
<hr/>
<p>
<text>User roles:</text>
<ol>
@foreach (var role in ViewBag.RolesForThisUser)
{
<li>@role <input type="hidden" name="DeleteRoleName" value="@role" /><input type="submit" value="Delete" name="action:DeleteRole" /></li>
}
</ol>
</p>
}
if (ViewBag.Action != null)
{
<hr />
<p>
@ViewBag.Action
</p>
}
}
请帮忙。 谢谢, 托马斯
您不能嵌套表单,您最好使用 ajax 到 post 控制器操作,该操作具有将角色添加为表单数据或参数所需的信息。在打开表单标签中设置的提交操作,参数是手动设置的。您还可以使用 javascript 根据按钮单击更改提交时的表单属性,但使用标准输入会更容易遵循,这些标准输入会触发 ajax 调用,使用您正在查找的每一行的数据字段提交。 form.onSubmit 属性 将允许您将参数添加到表单操作中的相同操作。 button.onClick 属性 允许您构建 ajax 调用,该调用将转到特定的控制器和操作来处理您的逻辑。
问题以不同的方式解决(3 种形式 - 在 ViewBag 中传递用户名):
@using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<p>
Users: @Html.DropDownList("UserName", (IEnumerable<SelectListItem>)ViewBag.Users, "Select ...")
<input type="submit" value="Get roles" name="action:GetUserRoles" />
</p>
}
@if (ViewBag.RolesForThisUser != null)
{
<hr/>
<p>
<text>User roles:</text>
<ol>
@foreach (var role in ViewBag.RolesForThisUser)
{
using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
<li>@role
<input type="hidden" name="UserName" value="@ViewBag.User" />
<input type="hidden" name="DeleteRoleName" value="@role" />
<input type="submit" value="Delete" name="action:DeleteRole" /></li>
}
}
</ol>
</p>
}
@using (Html.BeginForm("GetUserRoles", "Manage"))
{
@Html.AntiForgeryToken()
if (ViewBag.RolesForThisUser != null)
{
<p>
<text> Role name: </text>
@Html.DropDownList("RoleName", (IEnumerable<SelectListItem>)ViewBag.Roles, "Select ...")
<input type="hidden" name="UserName" value="@ViewBag.User" />
<input type="submit" value="Add role" name="action:AddRole"/>
</p>
}
}