2 回答
TA贡献1818条经验 获得超7个赞
这是您可以使用的另一个选项,它可以为每一行设置表单。
在您看来,将现有表单替换为每行中的一个表单,这样您也可以在表单提交中传入您的用户 ID。此外,下拉列表添加了“onchange”,以便在更改时自动提交单个父表单。
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="box-title">
<b>Users with Roles</b>
</h3>
</div>
<div class="panel-body">
<table class="table table-hover table-bordered table-condensed" id="UsersWithRoles">
<thead>
<tr>
<td><b>Username</b></td>
<td><b>Roles</b></td>
</tr>
</thead>
@foreach (var user in Model)
{
<tr>
<td>@user.Username</td>
<td>@user.Role</td>
<td>
@using (Html.BeginForm("ModifyUser", "UserControl", FormMethod.Post, new { id = "ManageUser" }))
{
@Html.HiddenFor(modelItem => user.UserId)
@Html.DropDownList("Roles", new SelectList(ViewBag.RoleList), "Modify Role",
new { @class = "form-control", onchange = "this.parentElement.submit()" })
}
</td>
</tr>
}
</table>
</div>
</div>
现在您可以从接收操作中获取角色和用户 ID:
[AuthLog(Roles = "Super Admin")]
[HttpPost]
public ActionResult ModifyUser(string id)
{
string newRole = Request.Form["Roles"];
string userId = Request.Form["user.UserId"];
// ...
}
TA贡献1834条经验 获得超8个赞
我就是这样做的。
将下拉列表(和其他字段)包装在 html 表单中并为其指定一个 ID
添加一个隐藏的输入,其中包含要传递给服务器的用户 ID 的值
在下拉列表中添加调用 javascript 方法 OnChangeFunc 的 onchange 事件
@Html.DropDownList("Roles", new SelectList(ViewBag.RoleList), "Modify Role", new { @class = "form-control", @onchange="OnChangeFunc()" })
Javascript部分
<script>
function OnChangeFunc(){
//Get form by ID and submit it
}
</script>
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报
