我最近开始使用一些遗留的ASP.NET东西,但是遇到了一个有趣的问题:

我有一个显示一些值的表,其中一些是在C#服务器端评估的。它们都正常工作。突然之间

<td><asp:Label ID="Label2" runat="server" class='<%=SevenDayThresholdTooHighOrLow%>'><%=ChgFromSevenDaysAgoInfo%></asp:Label></td>


ChgFromSevenDaysAgoInfo已正确评估。
SevenDayThresholdTooHighOrLow在类引用内呈现为字符串。那是
class =“ ”。

在代码隐藏文件中,两个变量在同一作用域中声明,并且赋值的方式几乎一个接一个。我的Visual Studio不会抱怨找不到该属性中的某些变量,就像属性不存在一样。

还有哪些其他因素会影响这种可能性?我可能错过了什么?

非常感谢大家的帮助!


以利


编辑:我看了what is the use of Eval() in asp.net并试图以这种方式设置我的标签(class =''),不幸的是没有任何效果。

最佳答案

class属性可能未针对服务器端代码进行评估,可能是因为class isn't a property of Label。 (Label不是HTML元素,它是服务器端控件。因此,它使用对象属性代替HTML属性。)

有一个CssClass属性,您可以尝试使用它。但是即使那样,方法还是有所不同,因为系统可能仍不会尝试评估注入到已经存在于服务器端组件中的服务器端代码。不过,还是值得一试。

绝对应该工作的是在后面的代码中设置CssClass属性:

Label2.CssClass = SevenDayThresholdTooHighOrLow;


如果您想避免这种情况出现在代码背后(谁能怪您?),那么另一种方法可能是用HTML元素完全替换服务器端控件。这样的想法是,如果没有在服务器端代码中设置此控件的属性,那么它真的需要成为服务器端控件吗?如果我没记错的话,Label会以span的形式发出:

<span class="<%=SevenDayThresholdTooHighOrLow%>"><%=ChgFromSevenDaysAgoInfo%></span>

关于c# - 是什么导致该ASP.NET标记被视为字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22846472/

10-16 21:40