我有一个页面(User.aspx),显示等待接受的用户列表。页面允许管理员通过单击用户名旁边的按钮来接受组织用户。当管理员单击列表中任何用户的按钮时,它接受列表顶部的用户而不是选定的用户。我已经在Chrome开发者工具包中检查了ID,它正在传递正确的ID,但是当控件在Action(AcceptUser)中遇到断点时,它会在列表中显示第一个用户的ID。但看起来有些东西正在改变ViewBag (UserId)之间的价值。任何人都可以建议我如何解决这个问题。
Users.aspx
<% foreach (var user in Model.UsersAwaitingAcceptance)
{ %>
<a class="label label-SU-success" href="#accept" role="button" data-toggle="modal"><i class="icon-success icon-white"></i></a>
<% Html.RenderPartial("AcceptUserDialog", Model.Accept, new ViewDataDictionary { { "OrgId", Model.OrgId }, { "UserId", user.Id } }); %>
<% } %>
AcceptUserDialog.ascx
<div id="accept">
<% using (Html.BeginForm("AcceptUser", "Organization", new { userId = ViewBag.UserId, orgId = ViewBag.OrgId}, FormMethod.Post, new { @class = "zero-bottom form-horizontal" }))
{ %>
// UserId is different here
<%= ViewBag.UserId%>
<%= ViewData["UserId"]%>
// Above code is displaying different UserId
<% } %>
<\div>
OrganizationController
public ActionResult AcceptUser(Guid userId, Guid orgId)
{
// Logic here
}
答案 0 :(得分:1)
我认为问题是AcceptUserDialog中的div Id不是唯一的。对于列表中的所有按钮都是一样的,如果你对每一行都是唯一的,它应该可以工作。
如下所示,将div添加到users.aspx页面并将div对话框放入div中。然后使用UserId作为div Id(<div id="<%= user.Id%>">
)和href(href="#<%= user.Id%>"
)。
<强> Users.aspx 强>
<% foreach (var user in Model.UsersAwaitingAcceptance)
{ %>
<a class="label label-SU-success" href="#<%= user.Id%>" role="button" data-toggle="modal"><i class="icon-success icon-white"></i></a>
<div id="<%= user.Id%>">
<% Html.RenderPartial("AcceptUserDialog", Model.Accept, new ViewDataDictionary { { "OrgId", Model.OrgId }, { "UserId", user.Id } }); %>
<% } %>
<\div>
<强> AcceptUserDialog.ascx 强>
<% using (Html.BeginForm("AcceptUser", "Organization", new { userId = ViewBag.UserId, orgId = ViewBag.OrgId}, FormMethod.Post, new { @class = "zero-bottom form-horizontal" }))
{ %>
// UserId is different here
<%= ViewBag.UserId%>
<%= ViewData["UserId"]%>
// Above code is displaying different UserId
<% } %>
尝试以上操作,希望它能解决您的问题。
答案 1 :(得分:0)
它需要进行一些调试来验证这一点,但是要开始,请将其添加到视图中,通过使用视图源并查看要生成的表单来调试ID是否相同确定它并不总是为每个条目传递第一个ID。
您也可以尝试直接以ViewData["OrgId"]
和ViewData["UserId"]
从ViewData访问。