加入“Ajax&Atlas技术团队”和“ASP.NET AJAX (Atlas)学习”这两个关于Asp.Net Ajax的团队也有一个月了,但一直没有写过相关的随笔,多少有点愧对其它队员。不过由于加入这个阵营的时间比较晚,感觉从入门到精通似乎都有人写过了,而且自己暂时还没有用这个框架做过实际开发,更没有什么经验之谈了,所以就写一下在编译AspNet AJAX Documentation时碰到的问题和解决方法吧。
    之所以编译这个离线文档的项目,除了我对编译项目那种偏执狂般的爱好,似乎找不到什么其它原因(因为项目里的readme已经把如何直接发布这个离线文档讲得很清楚了)。

    OK,废话说完,下面把我编译这个项目的操作流程记录下来,为那些碰到一样问题的朋友做个参考。

 

1.解压AspNet_AJAX_Documentation.zip到一个目录


2.用VS2005打开该网站,选择解决方案->生成网站,会提示如下两个错误

没有关系,在资源管理器里右键项目所在的目录,查找 *.dll 的文件,将其中的 LocalizingScriptResources.dll 和 SampleControl.dll 添加引用到解决方案中(SampleControl.dll有两个分别是 C#.NET 和 VB.NET 实现的,引用哪一个都行),效果如图

 

 

3.再次生成网站,上面两个错误已解决,不过又报一个新错误,如图所示

这是因为 CustomContentTemplate 这个类,分别用 C# 和 VB 定义了两次,产生了类名冲突。右双击该错误 IDE 会打开"\Samples\System.Web.UI.UpdatePanel.ContentTemplate\cs\UpdatePanelContentTemplateDynamicCS.aspx",并定位到这行

        ITemplate t = new CustomContentTemplate();

双击选中"CustomContentTemplate",在右键菜单中点击[转到定义],IDE会打开"\App_Code\CS\System.Web.UI.UpdatePanel.ContentTemplate\CustomContentTemplate.cs",将其中的类名由 CustomContentTemplate 改为 CustomContentTemplateCS,别忘了改构造函数的名称,代码如下:

//<Snippet3>
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public class CustomContentTemplateCS : System.Web.UI.ITemplate
{
    public CustomContentTemplateCS()
    {
        //contructor
    }
...
}

同理,将"\App_Code\VB\System.Web.UI.UpdatePanel.ContentTemplate\CustomContentTemplate.VB"中的类名改为"CustomContentTemplateVB",代码如下:

'<Snippet3>
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
 
Public Class CustomContentTemplateVB
    Implements System.Web.UI.ITemplate
 
    Public CustomContentTemplateVB()
    'contructor
...
}

然后,把引用这两个类的代码再做相应的修改,分别为"\Samples\System.Web.UI.UpdatePanel.ContentTemplate\cs\UpdatePanelContentTemplateDynamicCS.aspx" 和 "\Samples\System.Web.UI.UpdatePanel.ContentTemplate\vb\UpdatePanelContentTemplateDynamicVB.aspx"修改为

        // The CustomContentTemplateCS class defines the contents of the UpdatePanel.
        ITemplate t = new CustomContentTemplateCS();

        ' The CustomContentTemplateVB class defines the contents of the UpdatePanel.
        up1.ContentTemplate = New CustomContentTemplateVB()

 

4.再次生成网站,OK!


5.如果为了让你将来在离线文档里看到的代码和实际运行的代码一致,可以把"\Samples\System.Web.UI.UpdatePanel.ContentTemplate\cs\App_Code" 和 "\Samples\System.Web.UI.UpdatePanel.ContentTemplate\vb\App_Code" 目录里的类也做相同的修改,不过意义不是很大。


6.另外,有些示例是要使数据库的,在readme里有详细的配置说明。我用的是 SQL Server Express 数据库,所以只需把项目里的 SampleData.zip 解压到 App_Data 目录,然后修改 web.config 里的两个数据库链接字符串 AdventureWorksConnectionString 和 NorthwindConnectionString ,将其 AttachDbFilename 属性分别指向刚解压出的两个 mdf 文件即可。

Posted on 2007-04-10 23:00  Clark Zheng  阅读(1123)  评论(2编辑  收藏  举报