我如何引用<%#Eval(' column')%>在.aspx脚本标记中?

时间:2013-08-14 14:39:28

标签: c# dotnetnuke repeater sqldatasource

请注意,我使用SQLDATASOURCE来执行SELECT * FROM myTable。这是我的中继器项目模板的一小部分:

<li>Work Extension: <%# Eval("WK_PHONE_EXT")%></li>

现在,假设<%# Eval("WK_PHONE_EXT")%>是一个空字符串。如何在<%# Eval("WK_PHONE_EXT")%>代码中引用<script language="c#" runat="server">。我知道我可以从代码隐藏中做到这一点,方法是将EVAL标记的值放在asp:label文本属性中然后找到它。我只想找一个更短的说法:

if(<%# Eval("WK_PHONE_EXT")%> == ""){
<%# Eval("WK_PHONE_EXT")%> == "N/A";
}

所以我不必重建我的简单DNN模块。这样的事情可能吗?

2 个答案:

答案 0 :(得分:1)

您可以在线查看

   <%#(String.IsNullOrEmpty(Eval("WK_PHONE_EXT").ToString()) ? "N/A" : Eval("WK_PHONE_EXT"))%>

编辑:

对于复杂的条件,我更喜欢在codebehind&amp;中编写一个公共(或受保护的)方法。处理它们

在用户界面.. '<%# MyDataItem(Eval("item")) %>'

public string MyDataItem(object value)
{
  if (string.IsNullOrEmpty(value.ToString()))
  {
     return "N/A";
  }

  return myValue.ToString();
}

答案 1 :(得分:1)

如果您只是使用jQuery在转发器中查找该项(或多个项目)并将其中的文本替换为“N / A”而不是尝试使用C#来做什么,该怎么办?

将您的eval代码包含在div中,并在其上添加一个类,然后使用该类

定位任何内容
<div class="workPhone"><%# Eval("WK_PHONE_EXT")%></div>

然后在jquery中像

<script type="text/javascript">
if($(".workPhone").HTML() == "")
{
    $(".workPhone").HTML("N/A");
}
</script>