【发布时间】:2009-05-14 19:01:02
【问题描述】:
我正在研究一本试图学习 ASP.NET 的书中的示例,但我偶然发现了一些奇怪的东西。首先,如果我按照书中的内容输入,VS 会给我错误。这是书中写的代码:
<asp:DataList ID="employeesList" runat="server">
<ItemTemplate>
<asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" />
Name: <strong><%#Eval("Name") %></strong><br />
Username: <strong><%#Eval("Username") %></strong><br />
<asp:LinkButton ID="detailsButton" runat="server" Text=<%#"View more details about " + Eval("Name")%>
CommandName="MoreDetailsPlease"
CommandArgument=<%#Eval("EmployeeID")%> />
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:DataList>
所以,我已经研究了一段时间,并提出了这个实际编译的解决方案:
<asp:DataList ID="employeesList" runat="server" onitemcommand="employeesList_ItemCommand">
<ItemTemplate>
<asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" />
Name: <strong><%#Eval("Name") %></strong><br />
Username: <strong><%#Eval("Username") %></strong><br />
<asp:LinkButton ID="detailsButton" runat="server" Text='View more details about <%# Eval("Name") %>'
CommandName="MoreDetailsPlease" CommandArgument='<%Eval("EmployeeID") %>' />
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:DataList>
请注意,我还在 asp:DataList 标记中添加了 OnItemCommand,所以现在我可以按预期触发事件了。
但是,浏览器中的结果不是我所期望的; strong text 中列出的名称和用户名显示得很好,但应该显示额外详细信息的文字控件(EmployeeID 字段)和 LinkButton 内的名称字段不会在页面中显示它们的值:
它应该说“EmployeeID:1”和“查看有关 Zak Ruvalcaba 的更多详细信息”
我猜是 Eval 函数在另一个控件中不起作用,有人可以帮我吗?
【问题讨论】:
标签: asp.net