Asp.net中如何将后台Label值传递给进度条的data-percent属性?
解决进度条data-percent属性赋值时的HtmlGenericControl错误
嘿,我来帮你快速搞定这个问题!你遇到的错误本质上有两个原因:一是你在data-percent里嵌套ASP.NET Label的写法不对,导致渲染后的HTML不符合进度条插件的预期;二是后台代码里可能误写了text(C#是大小写敏感的,而且HtmlGenericControl根本没有这个属性)。
给你两种简单的解决办法,选哪种都能快速搞定:
方法一:直接绑定后台数值到data-percent(最简洁)
把前台代码里嵌套在data-percent里的Label去掉,改用ASP.NET的数据绑定表达式直接输出数值:
<div class="skillbar clearfix " data-percent='<%# YourProgressValue.ToString() + "%" %>'> <div class="skillbar-title" style="background: #c0392b;"><span>TOPLAM</span></div> <div class="skillbar-bar" style="background: #e74c3c;"></div> <div class="skill-bar-percent"> <asp:Label ID="lblBlogAdet" runat="server" Font-Bold="true" ForeColor="navy" Font-Size="Medium"></asp:Label> </div> </div>
然后在后台的Page_Load(或者你绑定数据的方法里),给后台变量赋值并调用DataBind():
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 这里替换成你实际获取百分比的逻辑,比如从数据库读取 int YourProgressValue = 65; // 别忘了调用DataBind来触发前台的绑定表达式 this.DataBind(); } }
方法二:保留Label控件(如果需要复用这个值)
如果你还是想保留lblYuzde这个Label,那可以把data-percent绑定到Label的Text属性:
<div class="skillbar clearfix " data-percent='<%# lblYuzde.Text + "%" %>'> <div class="skillbar-title" style="background: #c0392b;"><span>TOPLAM</span></div> <div class="skillbar-bar" style="background: #e74c3c;"></div> <div class="skill-bar-percent"> <asp:Label ID="lblBlogAdet" runat="server" Font-Bold="true" ForeColor="navy" Font-Size="Medium"></asp:Label> </div> </div> <asp:Label ID="lblYuzde" runat="server"></asp:Label>
后台代码里给Label赋值后同样要调用DataBind():
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int progress = 65; lblYuzde.Text = progress.ToString(); this.DataBind(); } }
为什么原来的写法会报错?
你之前在data-percent里嵌套<asp:Label>的做法,会让浏览器渲染出类似这样的HTML:
<div data-percent="<span id='lblYuzde'>65</span>%">...</div>
进度条插件根本识别不了这种带HTML标签的百分比值。另外,如果你后台代码里尝试用text去访问div控件的内容,那肯定会报错——HtmlGenericControl对应的内容属性是InnerText或InnerHtml,而且C#是大小写敏感的,没有小写的text属性。
内容的提问来源于stack exchange,提问作者Ali Akyıldırım
相关产品推荐
相关产品推荐

