0

请注意,我正在使用 aSQLDATASOURCE来执行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 模块。这样的事情可能吗?

4

2 回答 2

1

你可以检查内联

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

编辑:

对于复杂的条件,我更愿意在代码隐藏中编写一个公共(或受保护)方法并在那里处理它们

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

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

  return myValue.ToString();
}
于 2013-08-14T14:42:06.070 回答
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>
于 2013-08-14T14:57:43.933 回答