在ASP中操作ItemTemplate内部控件.. NET使用c#
本文关键字:控件 NET 使用 内部 ItemTemplate ASP 操作 | 更新日期: 2023-09-27 18:01:27
在下面的代码中,当用户处于某个角色时,我想在运行时将<%# Eval("name") %>
更改为<%# Eval("role") %>
。我如何在代码后面(c#)做到这一点?
我特别想用User.IsInRole("Admin")
来做这件事。
<ItemTemplate>
<div class="comment">
<asp:Label class="name" runat="server" ID="NAME"> <%# Eval("name") %> </asp:Label>
<asp:Label class="date" runat="server" Text='<%# "Posted on: " + Eval("date") %>'></asp:Label>
<asp:Label class="message" runat="server" Text='<%# Eval("Message") %>'></asp:Label>
</div>
</ItemTemplate>
更新:我使用ListView
假设您从类型为Post的可枚举对象中获取数据(从linq/collection/whatever…),在aspx:
...
<asp:Label class="name" runat="server" ID="NAME">
<%# ProcessName(Container.DataItem as Post) %>
</asp:Label>
...
后面的代码:
protected string ProcessName(Post post){
if(User.IsInRole("Admin")){
return post.Name;
}
return post.Role;
}
也许你可以在绑定之前评估IsInRole,这样你就不必对每一行执行
可以使用三元操作符吗?(我自己也不确定)
<%# condition ? Eval("name") : Eval("role") %>
或在VB的情况下。净
<%# If(condition, Eval("name"), Eval("role")) %>
感谢Joachim,我得到了这个简单的解决方案:
<ItemTemplate>
<div class="comment">
<asp:Label class="name" runat="server" ID="NAME"> <%# User.IsInRole("Admin") ? Eval("role") : Eval("name") %> </asp:Label>
<asp:Label class="date" runat="server" Text='<%# "Posted on: " + Eval("date") %>'></asp:Label>
<asp:Label class="message" runat="server" Text='<%# Eval("Message") %>'></asp:Label>
</div>