试图让我的头脑缠绕Conditional NULL语法

时间:2017-04-07 17:57:49

标签: c# asp.net

我有一个ASP.NET搜索页面,在单击“搜索”按钮后显示SQL绑定的ListView。在EmptyDataTemplate中,我根据他们在邮件中搜索到的ID获得了一个asp标签。 “没有找到”有点儿的结果。“

这是按钮点击的原始代码隐藏:

protected void btnSearch_Command(object sender, CommandEventArgs e)
{

    Label lbl = (Label)lvMatOrders.Controls[0].Controls[0].FindControl("lblProjectID");
    if (lbl != null)  // this means EmptyDataTemplate is used, else ItemTemplate
    {

        if (string.IsNullOrEmpty(txtProjectID.Text))
        {
            lbl.Text = "#####";
        }
        else
        {
            lbl.Text = txtProjectID.Text;
        }

    }
}

我是否理解我可以将其减少到以下内容?

Label lbl = (Label)lvMatOrders.Controls[0].Controls[0].FindControl("lblProjectID");
lbl?.Text = (string.IsNullOrEmpty(txtProjectID.Text)) ? "#####" : txtProjectID.Text;

这里的主要目标是确保如果页面已经包含先前搜索的结果,则尝试将“#####”或txtProjectID.Text分配给lbl.Text的代码不会被执行显示为页面未显示EmptyDataTemplate,因此没有lblProjectID来分配文本。

如果页面处于ItemTemplate模式,是否会尝试lbl?.Text行?

1 个答案:

答案 0 :(得分:3)

不,代码甚至不会编译,您将收到错误"作业的左侧必须是变量,属性或索引器"

您不能在等号的左侧使用.?运算符,只能在右侧使用。