如您所见,如果条件为真,我尝试使用substring命令获得20个字符。但它不同意。
'<%#IIf(Eval("haber").ToString().Length >= 20, Eval("haber").ToString().Substring(0, 20) + "...", Eval("haber").ToString )%>'
另外,我在onmouseover事件上使用该代码。
像这样:
<a href="" onmouseover=""/>
可能是什么问题?
答案 0 :(得分:1)
首先:将您的逻辑从标记移到代码隐藏的方法,并在标记中调用此方法。
标记:
<%# this.FormatValue(Eval("haber")) %>
代码隐藏:
public string FormatValue(object value)
{
string str = (string)value;
if (str.length > 20)
return str.Substring(0, 20) + "...";
return str;
}
第二:表达式中存在语法错误:在最后一个ToString中缺少()
答案 1 :(得分:0)
IIf不执行短路逻辑 - 换句话说,无论第一个参数是否为真,都会对所有三个参数进行求值。在你的情况下,你没有指定结果是什么,但我打赌你总是得到完整的字符串,即使字符串长度&gt; 20。
你可以像Samich建议的那样做,或者你可以使用新的If语句,它确实实现了短路:
<%#IIf(Eval("haber").ToString().Length >= 20, Eval("haber").ToString().Substring(0, 20) + "...", Eval("haber").ToString())%>
我认为Samich的方法更好(标记中的代码更少),但是如果你想将它留在标记中,你应该使用If运算符:
<%#If(Eval("haber").ToString().Length >= 20, Eval("haber").ToString().Substring(0, 20) + "...", Eval("haber").ToString())%>