2014-12-01 36 views
1

我有一個頁面(User.aspx),它顯示等待接受的用戶列表。頁面允許管理員通過點擊用戶名旁邊的按鈕來接受用戶的組織。當管理員點擊列表中的任何用戶的按鈕時,它接受列表頂部的用戶而不是選定的用戶。我已經在Chrome Developer工具包中檢查了id,它正在傳遞正確的Id,但是當控件在Action(AcceptUser)中碰到斷點時,它顯示列表中第一個用戶的Id。但看起來像是改變了ViewBag (UserId)之間的值。任何人都可以請教我如何解決這個問題。ViewBag正在通過更改的值部分視圖

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

對於每個循環來說,你期望得到什麼??? ??? – Rex 2014-12-01 17:21:18

+0

我希望獲得所選用戶的UserId而不是列表中的第一個用戶。 – user1211185 2014-12-01 17:22:19

+0

我沒有看到任何條件檢查循環內.. – Rex 2014-12-01 17:24:00

回答

1

我認爲問題是AcceptUserDialog中的div ID不唯一。對於列表中的所有按鈕都是一樣的,如果你爲每一行設置它的唯一性,它應該可以工作。

如下所示,將div放入users.aspx頁面並將渲染對話框放在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 
<% } %> 

試試上面,希望這將解決你的問題。

+0

謝謝,它工作完美。 – user1211185 2014-12-02 11:12:01

0

這是需要進行一些調試來驗證這一點,但要開始,將其添加到視圖中,以便通過使用視圖源和查看錶單來調試ID是相同的,以確保它並不總是爲每個ID傳遞第一個ID條目。

您也可以嘗試直接從ViewData訪問ViewData["OrgId"]ViewData["UserId"]

+0

div ViewData和ViewBag都顯示相同的結果,這是不同於所需的Id。他們在列表中顯示第一個用戶的userId。 – user1211185 2014-12-01 17:48:04

相關問題