c# - 转发器中的 td 样式不会输出绑定(bind)值 ("This is not a scriptlet. Will output as plain text")

标签 c# asp.net data-binding repeater

我有一个中继器,其中有一个表,其中包含由中继器绑定(bind)的 td 的许多属性。 我必须向每个 td 添加一个 runat 服务器,以便我可以添加一个可见属性,因为根据数据,某些 tds 是不可见的。

现在我已经添加了 runat 服务器 我在设置我的 tds 的背景颜色时遇到了问题。它是用一个绑定(bind)值完成的。 当我将 <%%> 标签添加到我的样式时,它们将以纯文本形式输出,它甚至在我的 html 中说“这不是 scriptlet。将以纯文本形式输出”,而我的其余 <%%> 标签正确绑定(bind)。

为什么我的风格不再受约束?

我添加的其他标签会,但不是样式?

这是我的中继器的简化版。

   <table id="Table1" border="1" cellpadding="0" cellspacing="0" class="groups">
                <tr id="Tr1" class="thead">

                    <td colspan='<%#AllowedItems.Count() %>' align="center">
                        items
                    </td>
                </tr>
                <tr class="theadL">
                    <td id="Td1" runat="server" visible='<%#ItemAllowed("Item1")%>'>
                        item1
                    </td>
                    <td id="Td2" runat="server" visible='<%#ItemAllowed("Item2")%>'>
                       item2
                    </td>
                    <td id="Td3" runat="server" visible='<%#ItemAllowed("Item3")%>'>
                      item 3
                    </td>

                </tr>
                <asp:Repeater ID="Repeater1" runat="server" DataSource='<%# GetData((int)Eval("Id"))%>'>
                    <ItemTemplate>
                        <tr>                                                              
                            <td id="Td9" title='<%#Eval("Item1Status")%>' runat="server" visible='<%#ItemAllowed("Item1")%>'
                                style='background-color: <%#Eval("Item1StatusColour")%>;'>
                            </td>
                            <td id="Td10" title='<%#Eval("Item2Status")%>' runat="server" visible='<%#ItemAllowed("Item3")%>'
                                style='background-color: <%#Eval("Item3StatusColour")%>;'>
                            </td>
                            <td id="Td11" title='<%#Eval("Item3Status")%>' runat="server" visible='<%#ItemAllowed("Item4")%>'
                                style='background-color: <%#Eval("Item4StatusColour")%>;'>
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>

更新

样式呈现如下:

 style="background-color:&lt;%# &quot;&quot;+ Eval(&quot;Item1StatusColour&quot;)%>;" 

属性的所有其余部分都按照应有的方式呈现。

更新 这是请求的 ItemAllowed 方法

     public bool ItemAllowed(string item)
        {
//allowed items is a list<string>

            return AllowedItems.Contains(item);
        }

最佳答案

我建议的第一件事是使用 css 类而不是你正在做的事情。

当您将 html 元素与 runat=server 一起使用时,您会将其转换为 html 控件,而 .net 将呈现最终输出。您的特定问题源于 .net 使用 htmlencode 或类似的东西包装值。

我建议也许使用带有 onrowdatabound 事件的 gridview。然后您可以在代码隐藏中以编程方式执行任何操作。

关于c# - 转发器中的 td 样式不会输出绑定(bind)值 ("This is not a scriptlet. Will output as plain text"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838658/

相关文章:

c# - 基于 Visual Studio c# 中的源库创建自己的库

c# - 执行位于 JavaScript 代码隐藏中的函数?

ASP.NET 代码表达式、数据绑定(bind)和其他声明式表达式

android - 使用 Android 绑定(bind)库将 dimen 资源添加到布局

data-binding - 从 Controller 中的参数绑定(bind) Grails 日期

c# - 检测通信事件 c#

c# - 将泛型 IEnumerable<T> 转换为 IEnumerable<KeyValuePair> (C#)

c# - 如何通过 C# 以编程方式将 SLN 文件与 MSBuild 结合使用?

jquery - 在 Jquery 中调用 WCF 服务抛出错误

c# - asp.net mvc 中的 HttpPostedFileBase 状态