You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sitefinity WebForm小部件中渲染aria-label并使用ASP Literal设置属性

解决HTML控件中用ASP Literal设置aria属性的问题

方案1:使用Literal输出完整的aria-label属性

直接用<asp:Literal>标签输出包含资源表达式的aria-label属性,让ASP.NET正确解析资源表达式并渲染到页面:

<select id="pre-new-year-sel" name="previous-news-year-select" tabindex="5" class="news-drop test"
    <asp:Literal runat="server" Text='aria-label="<%$ Resources: Labels, SelectAYear %>"' />
>
    <asp:PlaceHolder ID="ItemsContainer" runat="server" />
</select>

注意:Literal的Text属性用单引号包裹,避免和属性值里的双引号冲突,确保资源表达式能正常解析。

方案2:将select转为服务器控件,后台设置属性

给原生select添加runat="server"使其成为服务器控件,再在后台代码中设置aria-label属性:

前端代码:

<select id="pre-new-year-sel" runat="server" name="previous-news-year-select" tabindex="5" class="news-drop test">
    <asp:PlaceHolder ID="ItemsContainer" runat="server" />
</select>

后台代码(C#示例):

protected void Page_Load(object sender, EventArgs e)
{
    // 通用ASP.NET资源获取方式
    pre_new_year_sel.Attributes["aria-label"] = GetLocalResourceObject("Labels.SelectAYear").ToString();
    // 或Sitefinity专属资源获取方式
    // pre_new_year_sel.Attributes["aria-label"] = Res.Get<Labels>().SelectAYear;
}

原写法报错原因

原生HTML控件的属性无法直接解析<%$ Resources: ... %>这类表达式,ASP.NET仅会在带runat="server"的服务器控件属性中处理这类表达式,直接写在select的aria-label属性里会被当作字面量,因此触发错误。

内容的提问来源于stack exchange,提问作者Salam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:20:26