asp.net – Web Forms错误消息:“这不是scriptlet 将输出为纯文本“

前端之家收集整理的这篇文章主要介绍了asp.net – Web Forms错误消息:“这不是scriptlet 将输出为纯文本“前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的ASP.NET Web窗体我有以下声明性代码
<asp:TextBox runat="server" ID="txtBox" CssClass='<%=TEXTBox_CSS_CLASS%>' />

常量TEXTBox_CSS_CLASS在页面代码隐藏类继承自的基类中定义:

public class MyPageBase : Page
{
    protected internal const string TEXTBox_CSS_CLASS = "myClass";
}

然而编辑时编译器却告诫我,“这不是scriptlet [sic],会输出为纯文本”。
对于它的单词,css类按字面上呈现为“<%= TEXTBox_CSS_CLASS%>”。

这个错误消息是什么意思,有没有解决方法,所以我仍然可以在基类中使用常量?

解决方法

您不能使用<%= ...%>设置服务器端控件的属性
内联表达式<%%>只能用在
aspx页面用户控件的顶级文档级别,但无法嵌入
服务器控件的标签属性(例如< asp:Button ... Text =<%%> ..>)。

如果您的TextBox位于DataBound控件(如GridView,ListView ..)中,您可以使用:<%#%>句法。或者您可以从代码隐藏或内联服务器脚本显式调用控件上的DataBind()。

<asp:TextBox runat="server" ID="txtBox" class='<%# TEXTBox_CSS_CLASS %>' />

//代码后面的文件

protected void Page_Load(object sender,EventArgs e)
{     
        txtBox.DataBind();
}

ASP.NET包含很少的内置表达式构建器,可以从web.config文件提取自定义应用程序设置和连接字符串信息。例:

>资源
> ConnectionStrings
> AppSettings

因此,如果要从< appSettings>中检索名为className的应用程序设置web.config文件的一部分,您可以使用以下表达式:

<asp:TextBox runat="server" Text="<%$ AppSettings:className %>" />

但是,以上代码片段不是从Appsettings中读取类名的标准。

您可以构建和使用您自己的Custom ExpressionBuilders或使用后面的代码

txtBox.CssClass = TEXTBox_CSS_CLASS;

Check this link建立自定义表达式构建器。
一旦您构建您的自定义表达式,您可以显示如下值:

<asp:TextBox Text="<%$ SetValue:SomeParamName %>"
    ID="setting" 
    runat="server" />
原文链接:https://www.f2er.com/aspnet/253715.html

猜你在找的asp.Net相关文章