asp.net eval问题

时间:2011-08-31 04:44:22

标签: asp.net webforms

所以我有一个asp.net页面,其中一个转发器绑定到一个viewmodel

我想根据当前行属性CapAssignedToUserCode是否与变量currentUserCode相同来显示/隐藏HTML块(参见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>
                   <%
                  }%>

2 个答案:

答案 0 :(得分:2)

仅将Eval用于渲染字段,如果要将字段数据传递给方法,请使用Container.DataItem。

所以你的代码应该是这样的:

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

答案 1 :(得分:0)

调用内联方法。该方法具有您的逻辑/输出。

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

还有其他几种方法,包括直接检查eval。 退房:

Conditional Logic in ASP.net page