1

以下代码编译,但不起作用。据我所知,数据绑定表达式允许其中包含任何有效的 C# 代码。那么我在这里做错了什么?

<asp:Panel CssClass='<%# ("my-class") %>' runat="server" ID="myPannel">
   Blah
</asp:Panel>

<% this.myPannel.DataBind(); %>

我没有收到任何错误。它只是不呈现任何类属性。我试过没有括号,但运气同样不好。

请注意,我需要在 CssClass 属性中评估一个表达式,并且我希望将该表达式的结果分配给 class 属性。这就是为什么我通过将字符串括在括号中来强调这一点的原因。

4

1 回答 1

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>

在所有这三种情况下,您必须确保在页面生命周期中处理控件的实际内联代码之前更新控件属性。

于 2013-11-14T23:03:02.393 回答