这是我尝试过的,但我的编译器并没有很好地接受它:
<%#(String.IsNullOrEmpty(Eval("WK_PHONE_EXT").ToString()) || ((Eval("WK_PHONE_EXT").ToString().Length = 4) ? "N/A" : Eval("WK_PHONE_EXT"))%>
我想检查字符串是空还是空或者长度是否等于4,如果是,那么("WK_PHONE_EXT").ToString
将显示为“N / A”。我该怎么做?
答案 0 :(得分:5)
看起来我的括号不匹配。
((Eval("WK_PHONE_EXT").ToString().Length = 4)
............................................... ........................................... ^就在那里
您也可以删除不必要的左括号。
正如Omada所指出,Length = 4
需要Length == 4
我想扩展我的内联以避免这些问题。像这样:
(String.IsNullOrEmpty(Eval("WK_PHONE_EXT").ToString())
|| ((Eval("WK_PHONE_EXT").ToString().Length = 4)
? "N/A"
: Eval("WK_PHONE_EXT")
)
理想情况下,第二行的括号不匹配会更明显。
我更喜欢卡尔的方法。如果内联很大,则不应该是内联。
答案 1 :(得分:3)
在您的页面上创建一个方法,而不是与运行时隐藏,并在标记中查找编程错误,如下所示:
public string GetPhoneExtension(string phoneExtension)
{
if((String.IsNullOrEmpty(phoneExtension) || (phoneExtension.Length == 4))
{
return "N/A";
}
return phoneExtension;
}
现在在您的标记中,您可以调用此函数,如下所示:
<%# GetPhoneExtension(Eval("WK_PHONE_EXT").ToString())%>
这为您提供了Visual Studio中的IntelliSense和编译时检查功能,而不是大多数问题的运行时检查。在我看来,它也会产生更清晰的标记,你只需要编写一次Eval()
调用,就可以减少在其他Eval()
调用中输入拼写错误的机会。
答案 2 :(得分:2)
你非常接近!
将等号更改为double等于并修复括号:
((Eval("WK_PHONE_EXT").ToString().Length == 4))