2011-08-31 111 views
0

所以我有一個綁定到一個視圖模型asp.net EVAL問題

我想顯示/隱藏基於HTML的塊中的中繼器的asp.net頁面,如果當前行屬性CapAssignedToUserCode是一樣的可變currentUserCode(參見if語句)

存在的財產CapAssignedToUserCode當前行中的值,如果我硬編碼的eval(「CapAssignedToUserCode」)將字符串這一切工作

我基本上想要得到的轉發器的當前行並將屬性CapAssignedToUserCode傳遞給函數commonCap.SameUserCode

<asp:Repeater ID="rptAnnualActionsAssigned" runat="server"> 
    <ItemTemplate> 
     <div class="item"> 
      <asp:HiddenField ID="hdnCapItemId" runat="server" /> 
      <h4> 
       <%#Eval("CategoryTitle")%>: 
       <%#Eval("CategoryIndex")%></h4> 
      <span class="status"><strong>Status: </strong> 
       <%#Eval("CapAssignedStatus")%></span> 
       <span class="status"><strong>Assigned To: </strong> 
       <%#Eval("CapAssignedToFullname")%></span> 
      <div class="noHighlightTable"> 
      usercode:<%#Eval("CapAssignedToUserCode")%> 
       <% 
        if (showCompleteBtn || commonCap.SameUserCode(Eval("CapAssignedToUserCode").ToString(), currentUserCode)) 
        {%> 
       <a class="noHighlightBtn" onclick="OpenSPDialog('/_layouts/beim/CAPAction.aspx?capDataId=' + <%#Eval("CapDataId")%>, 'Complete Action')" 
        href="javascript:void(0);">Complete action</a> 
        <% 
        }%> 

回答

0

內嵌調用方法。該方法有你的邏輯/輸出。

<%# WhateverYourLogicIs((bool) DataBinder.Eval(Container.DataItem,"CapAssignedToUserCode")) %> 

還有其他幾種方法,包括直接檢查eval。 退房:

Conditional Logic in ASP.net page

+0

我無法訪問Container對象?任何想法 –

2

使用eval只渲染領域,如果你想現場數據傳遞給方法使用的Container.DataItem。

所以,你的代碼應該看起來像這樣:

<%# 
    if (showCompleteBtn || commonCap.SameUserCode((Container.DataItem as YourBindedType).CapAssignedToUserCode), currentUserCode)) 
{%> 
+0

我無法訪問Container對象?任何想法 –

+0

難道你忘記#'後''%符號? – Dima

+0

歡呼聲指出散列 –