ASP.NET自定义控件适配器没有发射 [英] ASP.NET Custom Control Adapter not firing

查看:123
本文介绍了ASP.NET自定义控件适配器没有发射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想下面写一个简单的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆