如何使用“;或“;<;%#中的条件蒸发量(';列';)%>;内联语句

本文关键字:语句 gt 条件 lt 何使用 蒸发量 | 更新日期: 2023-09-27 18:27:54

以下是我尝试过的,但我的编译器没有很好地接受:

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

我想检查字符串是否为null或空,或者长度是否等于4,如果是,则("WK_PHONE_EXT").ToString将读取"N/A"。我该怎么做?

如何使用“;或“;<;%#中的条件蒸发量(';列';)%>;内联语句

我觉得括号不匹配。

((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")
)          

理想情况下,第二行的括号不匹配会更明显。

我更喜欢卡尔的方法。如果内联有那么大,它就不应该是内联。

在页面上创建一个方法,而不是在标记中与运行时隐藏和查找编程错误作斗争,如下所示:

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()调用中出现拼写错误的机会。

你非常接近!将等号更改为双等号并固定括号:((Eval("WK_PHONE_EXT").ToString().Length == 4))