ASP.NET自定义控件适配器没有发射 [英] ASP.NET Custom Control Adapter not firing
问题描述
我想下面写一个简单的ControlAdapter是一个非常简化的情况,但我似乎仍不能得到它的工作。在我的简化的情况我只是想呈现我的控制之前写出来的东西。
I am trying to write a simple ControlAdapter below is a very simplified case, but I still can't seem to get it to work. In my simplified case I just want to write something out before my control is rendered.
我定义我的控制适配器作为这样的:
I defined my control adapter as such:
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);
}
}
}
- 然后我在我的Test.Web项目增加了一个App_Browsers文件的文件夹。
- 然后我加了default.browser文件App_Browsers文件在
和我default.browsers看起来像
And my default.browsers looks like
<browsers>
<browser id="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.RadioButton" adapterType="Test.Web.Common.Controls.ControlAdapters.RadioBtnStyleAdapter"></adapter>
</controlAdapters>
</browser>
</browsers>
这是我的理解,应该是够了,该框架应拿起适配器,但它从来没有真正似乎激发。
It is my understanding that should be enough, and the framework should pick up the the adapter, however it never actually seems to fire.
什么可能会错过我有什么建议?
Any suggestions about what I could be missing?
更新
我可以,如果我programmaticaly上Page_Init添加适配器像这样得到它的工作。
I am able get it to work if I programmaticaly add the adapter on Page_Init like so
HttpContext.Current.Request.Browser.Adapters["System.Web.UI.WebControls.RadioButton"] = "Test.Web.Common.Controls.ControlAdapters.RadioBtnStyleAdapter";
但没有什么我看了节目这是一个必要的步骤,所以我不相信这是正确的。
But nothing I have read show this as a required step, so I am not convinced this is correct.
推荐答案
您需要在浏览器元素的id属性更改为 REFID 如下。
id属性是使用,如果你想给它一个唯一的名称,当映射/识别特定的浏览器,并关联与现有的浏览器定义新的功能(如控制适配器)时REFID使用。而这正是你想做的事情。
You need to change the id attribute of the browser element to refID as follows. The id attribute is used if you would like to give it a unique name, when mapping/identifying a particular browser, and refID is used when associating new capabilities (such as Control Adapters) with an existing browser definition. And that's exactly what you want to do.
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.RadioButton" adapterType="Test.Web.Common.Controls.ControlAdapters.RadioBtnStyleAdapter"></adapter>
</controlAdapters>
</browser>
</browsers>
这篇关于ASP.NET自定义控件适配器没有发射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!