我有一些太复杂的代码
visible='<%#((String.IsNullOrEmpty(Eval("IDLingua").ToString()) [...]%>' runat="server">
我想引入一个变量来保存String.IsNullOrEmpty(Eval(“IDLingua”)。ToString()操作的结果。
我可以在Ascx代码或后面的代码中执行此操作。但经过几个小时的研究后,我仍然不明白该怎么做
答案 0 :(得分:1)
您无法将此类对象指定给简单变量。
visible='<%#((String.IsNullOrEmpty(Eval("IDLingua").ToString())
[...]%>' runat="server">
一般情况下,我不建议在aspx视图上处理数据。在我看来,如果你在后面或甚至更早的代码中处理它(在从数据库中获取数据和在后面的代码中准备视图之间)会更好。视图应该是最小的,只有当前数据,而不是处理它。
无论如何......我猜你的Eval代码存在于转发器或使用数据绑定器的其他控件中。
您应该能够定义其他隐藏字段控件并将表达式保存在那里。
<asp:HiddenField id="hidTmp" runat="server" value='<%# String.IsNullOrEmpty(Eval("IDLingua").ToString() %>' />
但请记住,它只适用于<ItemTemplate>
个标签内部。你可以使用hidTmp作为变量。
另一种方法可能是使用OnItemDataBound
方法并使用后面的代码(引入变量不是问题):
答案 1 :(得分:1)
这看起来像应该在UI之外的逻辑。您可以向包含逻辑
的对象IsVisible添加新属性visible='<%#Eval("IsVisible")%>' runat="server">
或者在后面的代码中创建一个函数并调用它
visible='<%#IsVisible(Eval("IDLingua"))%>' runat="server">