加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:43:08 所属栏目:asp.Net 来源:网络整理
导读:在我的ASP.NET Web窗体我有以下声明性代码: asp:TextBox runat="server" ID="txtbox" CssClass='%=TEXTBOX_CSS_CLASS%' / 常量TEXTBOX_CSS_CLASS在页面的代码隐藏类继承自的基类中定义: public class MyPageBase : Page{ protected internal const string
在我的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" />

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读