如何在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
相关产品推荐
相关产品推荐

