Asp.net 如何仅在特定页面上使用css控件适配器

Asp.net 如何仅在特定页面上使用css控件适配器,asp.net,asp.net-2.0,Asp.net,Asp.net 2.0,我找到了asp.net向导控件的控件适配器。我想在我的网站上使用它。但是我已经有了一些使用向导控件的页面。我不希望这些页面使用新适配器。有可能吗?我没有直接使用适配器,但通过阅读文档,您似乎可以将向导控件子类化为自己的版本,比如“AdaptedWizard”。您不必对基础代码进行任何重写,除非它有助于解决您遇到的其他问题 从那里,您似乎可以修改.browser文件以引用AdaptedWizard类而不是默认的Wizard类。然后,站点上的所有新向导都将从AdaptedWizard而不是Wizar

我找到了asp.net向导控件的控件适配器。我想在我的网站上使用它。但是我已经有了一些使用向导控件的页面。我不希望这些页面使用新适配器。有可能吗?

我没有直接使用适配器,但通过阅读文档,您似乎可以将向导控件子类化为自己的版本,比如“AdaptedWizard”。您不必对基础代码进行任何重写,除非它有助于解决您遇到的其他问题

从那里,您似乎可以修改.browser文件以引用AdaptedWizard类而不是默认的Wizard类。然后,站点上的所有新向导都将从AdaptedWizard而不是Wizard分类

祝你好运


Nate

如果您有权访问源代码,则可以编辑控件适配器,以便在调整控件的输出之前,首先检查自定义属性是否存在并且具有正确的值。您应该在呈现之前删除自定义属性,否则它将呈现为html

我已经在许多控制适配器上使用过它,它工作良好,并为您提供了调整哪些控制的指示。它还消除了创建扩展类的需要

下面的代码是我如何确定是否应该调整控件的

public class TestAdapter : WebControlAdapter
{
    bool _adapt = false;

    protected override void OnInit(EventArgs e)
    {
        Check();
        base.OnInit(e);
    }


    void Check()
    {
        // search for custom attribute
        const string att = "adapt";
        string value = this.Control.Attributes[att];

        if (string.IsNullOrEmpty(value))
        {
            return;
        }

        if (!bool.TryParse(value, out _adapt))
        {
            throw new InvalidOperationException("adapt attribute has invalid value : " + value);
        }

        this.Control.Attributes.Remove(att);
    }
}

是的,这真是一种享受——我做过一些这样的东西。