带有DataBinder.Eval的条件运算符

vin*_*nit 6 c# asp.net data-binding

我想做这样的事情

<%#(DataBinder.Eval(Container, "DataItem.Age").ToString()=="0") 
    ?"n/a"
    :"DataBinder.Eval(Container, "DataItem.Age")"%>
Run Code Online (Sandbox Code Playgroud)

可能吗?

Ole*_*rat 9

您可以在页面级别编写方法并在那里格式化输出.

例如

<%# GetAgeDisplay(Eval("Age")) %>
Run Code Online (Sandbox Code Playgroud)

并在代码后面:

public String GetAgeDisplay(Int16 age) {
  return age == 0 ? "n/a" : String.Format("{0}", age );
}
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 6

确保您正在调用DataBinder而不是简单地返回一个字符串:

改变这个:

<%#(DataBinder.Eval(Container, "DataItem.Age").ToString()=="0") ? 
             "n/a":"DataBinder.Eval(Container, "DataItem.Age")"%>
Run Code Online (Sandbox Code Playgroud)

至:

<%#(DataBinder.Eval(Container, "DataItem.Age").ToString()=="0") ? 
             "n/a":DataBinder.Eval(Container, "DataItem.Age")%>
Run Code Online (Sandbox Code Playgroud)

你正在做的是返回一个字符串而不是执行绑定表达式.