2011-08-31 46 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

欢呼声指出散列 –