我正在编写一本试图学习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,所以现在我可以按预期触发事件了。
然而,浏览器的结果并不是我所期望的; 强文中列出的名称和用户名显示正常,但应显示额外详细信息的Literal控件(EmployeeID字段)和LinkButton中的Name字段不会在页面中显示其值:
应该说“EmployeeID:1”和“查看有关Zak Ruvalcaba的更多详情”
我想这是在另一个控件里面没有工作的Eval函数,任何人都可以帮助我吗?
答案 0 :(得分:3)
将LinkButton更改为:
<asp:LinkButton ID="detailsButton" runat="server"
Text='<%# Eval("Name", "View more details about {0}") %>'
CommandName="MoreDetailsPlease"
CommandArgument='<%# Eval("EmployeeID") %>' />
抱歉,我对参数的顺序感到困惑。我更新了我的答案。格式必须是第二个参数。
答案 1 :(得分:1)