所以我有一个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>
<%
}%>
答案 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。 退房: