ASP.NET中无需JavaScript,如何在HTML属性内拼接文本?
解决ASP.NET ListItem属性中拼接资源文本的问题
嘿,我明白你的需求——不想写JS,直接在HTML里给资源字符串加上<和>对吧?你的那种直接拼接写法不可行,因为ASP.NET的<%$ Resources:... %>表达式语法只能作为属性的完整值,没法和其他字符串直接混写在属性里。不过有几个简单的办法能实现你的需求,咱们来看:
方法一:使用数据绑定表达式(<%# %>)
这种方法需要确保你的下拉列表控件执行数据绑定操作,写法如下:
<asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem Value="1" Text='<%# "<" + Resources.LocalizedText.LastSession + ">" %>' /> </asp:DropDownList>
然后在后台代码的Page_Load事件里添加数据绑定的代码:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DropDownList1.DataBind(); } }
这样页面加载时,数据绑定表达式会被解析,把资源文本和前后的符号拼接起来。
方法二:直接在后台代码添加ListItem
如果不想在前台写表达式,也可以直接在后台创建ListItem并添加到下拉列表里,这样更直观:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string displayText = $"<{Resources.LocalizedText.LastSession}>"; DropDownList1.Items.Add(new ListItem(displayText, "1")); } }
前台只需要保留空的DropDownList控件即可:
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
方法三:修改资源文件(备选)
如果你的场景允许修改资源文件,直接在LocalizedText.resx里把LastSession的值改成<你的文本>也是个省事的办法,这样前台直接用原来的写法就行:
<asp:ListItem Value="1" Text="<%$ Resources: LocalizedText, LastSession%>" />
不过这个方法只适合不需要动态拼接,且资源值固定带符号的场景。
总结一下,前两种方法都不需要写JS,完全在ASP.NET的服务器端处理就能实现你要的效果~
内容的提问来源于stack exchange,提问作者Moemegildo
相关产品推荐
相关产品推荐

