以下代码编译,但不起作用。据我所知,数据绑定表达式允许任何有效的C#代码。那么我在这里做错了什么?
<asp:Panel CssClass='<%# ("my-class") %>' runat="server" ID="myPannel">
Blah
</asp:Panel>
<% this.myPannel.DataBind(); %>
我没有收到任何错误。它只是不呈现类属性。我试着没有括号,运气不好。
请注意,我需要在CssClass属性中计算一个表达式,我希望将该表达式的结果赋给class属性。这就是我通过将字符串括在括号中来强调这一点的原因。
答案 0 :(得分:3)
试试这个:
<html>
<head runat="server">
<title></title>
<script runat="server">
protected void
Page_Load(object sender, EventArgs e)
{
this.myPannel.DataBind();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel CssClass='<%# ("my-class") %>'
runat="server"
ID="myPannel">
Blah
</asp:Panel>
</form>
</body>
</html>
或者只是切换内联代码段的顺序:
<body>
<% this.myPannel.DataBind(); %>
<form id="form1" runat="server">
<asp:Panel CssClass='<%# ("my-class") %>'
runat="server"
ID="myPannel">
Blah
</asp:Panel>
</form>
</body>
或者只是使用:
<% this.myPannel.CssClass = "my-class";%>
<form id="form1" runat="server">
<asp:Panel
runat="server"
ID="myPannel">
Blah
</asp:Panel>
</form>
在所有三种情况下,您必须确保控件属性在之前更新在页面的生命周期中处理控件的实际内联代码。