C# In line if语句在服务器控件中不起作用

C# In line if语句在服务器控件中不起作用,c#,asp.net,gridview,inline,servercontrols,C#,Asp.net,Gridview,Inline,Servercontrols,我有一个gridview,它从数据库的一列中提取日期: <Columns> <asp:BoundField DataField="Person" HeaderText="Person" SortExpression="Person" /> <asp:BoundField DataField="Effort" HeaderText="Effort" SortExpression="Effort" /> <asp:BoundField Da

我有一个gridview,它从数据库的一列中提取日期:

<Columns>
   <asp:BoundField DataField="Person" HeaderText="Person" SortExpression="Person" />
   <asp:BoundField DataField="Effort" HeaderText="Effort" SortExpression="Effort" />
   <asp:BoundField DataField="Task" HeaderText="Task" SortExpression="Task" />
   <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
   <asp:BoundField DataField="OriginalEstimateHours" HeaderText="Estimated Hours" SortExpression="OriginalEstimateHours" />
   <asp:BoundField DataField="Total" HeaderText="Total" SortExpression="Total" />
   <asp:TemplateField HeaderText="Last Worked" ItemStyle-HorizontalAlign="Right" >
   <ItemTemplate>
       <asp:LinkButton ID="taskLinkButton" Text='<%# if (Eval("LastWorked").ToString().Length > 0) { Eval("LastWorked").ToString().Substring(0, 9)} %>' runat="server"  />
   </ItemTemplate>
       </asp:TemplateField>
</Columns>

这也是在拉回时间,我想要的只是日期,所以我尝试添加一个子字符串。问题是行中返回的某些字段有日期,而有些字段返回NULL。所以我想做一个if条件,它只在长度大于0时才做一个子字符串

然而,我得到一个错误,说“无效的表达式项”如果


我做错了什么?如何修复它?

我建议将其更改为三元运算符:

<asp:LinkButton ID="taskLinkButton"
     Text='<%# (Eval("LastWorked").ToString().Length > 0) ? Eval("LastWorked").ToString().Substring(0, 9) : string.Empty %>'
     runat="server"  />


我想,您的方法不起作用的原因是它实际上没有返回任何内容。

我建议将其改为三元运算符:

<asp:LinkButton ID="taskLinkButton"
     Text='<%# (Eval("LastWorked").ToString().Length > 0) ? Eval("LastWorked").ToString().Substring(0, 9) : string.Empty %>'
     runat="server"  />

我想,你的方法不起作用的原因是它实际上没有返回任何东西