WebForms派生自定义CheckBox控件Text属性<%= %>绑定失效求助
问题根因
ASP.NET WebForms 框架对内置服务端控件有特殊的属性解析逻辑,原生asp:CheckBox的Text属性可以识别内嵌的<%=输出表达式并执行对应代码。而自定义派生控件默认使用通用解析逻辑,会把属性内的<%= %>内容当成普通字符串直接赋值,不会触发代码执行,因此文本不显示。
解决方案
方案1:改用标准数据绑定表达式(推荐,无需修改控件代码)
- 将控件属性的
<%=替换为数据绑定标识<%#:
<vm:CheckBox ID="Save" runat="server" Text='<%# SomePageMethod("param") %>' />
- 在页面生命周期中触发绑定,比如在
Page_Load方法中添加代码:
- 仅绑定当前控件:
Save.DataBind(); - 绑定页面所有控件:
Page.DataBind();
方案2:修改自定义控件支持<%=表达式
如果要保留原有页面的表达式写法,给自定义控件类添加ControlBuilder特性即可复用内置控件的解析规则:
using System.Web.UI; namespace MyControls { public interface ICheckBox { bool Visible { get; set; } } [ControlBuilder(typeof(ControlBuilder))] public class CheckBox : ICheckBox, System.Web.UI.WebControls.CheckBox { } }
内容的提问来源于stack exchange,提问作者drdwilcox
相关产品推荐
相关产品推荐

