[英]ASP.NET Custom Control Adapter not firing
我正在尝试编写一个简单的 ControlAdapter 下面是一个非常简化的案例,但我似乎仍然无法让它工作。 在我的简化案例中,我只想在呈现控件之前写出一些东西。
我这样定义了我的控制适配器:
using System.Web.UI;
using System.Web.UI.WebControls.Adapters;
namespace Test.Web.Common.Controls.ControlAdapters {
public class RadioBtnStyleAdapter : WebControlAdapter {
protected override void BeginRender(HtmlTextWriter writer) {
writer.WriteLine("<!--- CONTROL ADAPTER -->");
writer.WriteLine("<div><b>TEST</b></div");
base.BeginRender(writer);
}
}
}
我的 default.browsers 看起来像
<browsers>
<browser id="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.RadioButton" adapterType="Test.Web.Common.Controls.ControlAdapters.RadioBtnStyleAdapter"></adapter>
</controlAdapters>
</browser>
</browsers>
我的理解应该足够了,框架应该拿起适配器,但它实际上似乎从未触发过。
关于我可能缺少什么的任何建议?
更新
如果我像这样以编程方式在 Page_Init 上添加适配器,我就能让它工作
HttpContext.Current.Request.Browser.Adapters["System.Web.UI.WebControls.RadioButton"] = "Test.Web.Common.Controls.ControlAdapters.RadioBtnStyleAdapter";
但是我读过的任何内容都没有显示这是必需的步骤,所以我不相信这是正确的。
您需要将浏览器元素的 id 属性更改为refID ,如下所示。 如果您想在映射/识别特定浏览器时为其赋予唯一名称,则使用 id 属性,在将新功能(例如控制适配器)与现有浏览器定义相关联时使用 refID。 而这正是您想要做的。
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.RadioButton" adapterType="Test.Web.Common.Controls.ControlAdapters.RadioBtnStyleAdapter"></adapter>
</controlAdapters>
</browser>
</browsers>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.