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

时间:2009-03-19 20:24:05

标签: asp.net asp.net-2.0

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

2 个答案:

答案 0 :(得分:1)

我没有直接使用适配器,但是通过阅读文档,看起来您可以将向导控件子类化到您自己的版本中 - 比如说“AdaptedWizard”。您不必对基本代码进行任何覆盖,除非它可以帮助您解决其他问题。

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

祝你好运!

内特

答案 1 :(得分:0)

如果您有权访问源代码,则可以编辑控件适配器,以便在调整控件输出之前首先检查自定义属性是否存在并具有正确的值。您应该在渲染之前删除自定义属性,否则它将呈现为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);
    }
}