ASP .net忽略基于版本的标签

时间:2009-11-16 18:36:31

标签: asp.net

我在两个不同的服务器(2.0和3.5 .net版本)中部署我的asp.net。 .net 2.0中不支持某些标记。如何查看.net版本并忽略html标签?

例如,AJAX ..我想禁用.net 2.0中的<asp:ScriptManager>

2 个答案:

答案 0 :(得分:0)

在项目属性下,您可以定位.Net 2.0框架。这将删除仅限.Net 3.5的引用。

答案 1 :(得分:0)

.aspx文件中的标记被静态编译为一系列对象实例。当相应的类型不存在时,不可能使用某些标签。

如果您需要同时定位ASP.NET 2.0和3.5,则需要在代码隐藏中使用ASP.NET 3.5的特定功能,并且仅在测试当前版本之后。使用3.5功能的代码必须采用特定的方法,如果您的版本低于2.0,则从不调用。 JIT编译器以方法粒度工作,因此您可以在未调用方法中使用未知类型。但以下情况不起作用:

void f() {

    if (IsRunningUnderAspNet35) {
        AspNet35Class xxx = new AspNet35Class();
    }
}

但是以下工作:

void f() {

    ICommonInterface i;
    if (IsRunningUnderAspNet35) {
        i = FactoryUsingAspNet35Class();
    } else {
        i = FactoryUsingAspNet20Class();
    }
    // use i

}

如果您使用的是引用AspNet 3.5的DLL,则需要动态加载它们,而不是通过静态项目引用加载它们。

注意:您最好试图说服服务器管理员安装ASP.NET 3.5。