0

我正在使用 Visual Studio 2008,并已下载 VSeWSS.exe 1.2,以启用 Web 部件开发。我是 SP 开发的新手,并且已经对不同版本的 SP 和 VS 附加组件的数量感到困惑。这个特殊的问题出现了,这凸显了我的困惑。

我选择了添加 -> 新项目 -> Visual C# -> SharePoint-> Web Part,接受默认值,然后 VS 创建了一个项目,主文件为 WebPart1.cs

using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

namespace WebPart1
{
    [Guid("9bd7e74c-280b-44d4-baa1-9271679657a0")]
    public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart
    {
        public WebPart1()
        {
        }

        protected override void CreateChildControls() // <-- This line
        {
            base.CreateChildControls();

            // TODO: add custom rendering code here.
            // Label label = new Label();
            // label.Text = "Hello World";
            // this.Controls.Add(label);
        }
    }
}

我正在关注的书,Essential SharePoint 2007,作者 Jeff Webb,默认项目具有以下内容 -

using System;
<...as previously>

namespace WebPart1
{
    [Guid("9bd7e74c-280b-44d4-baa1-9271679657a0")]
    public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart
    {
        // ^ this is a new style (ASP.NET) web part! [author's comment]
        protected override void Render(HtmlTextWriter writer) // <-- This line
        {
            // This method draws the web part   
            // TODO: add custom rendering code here.
            // writer.Write("Output HTML");
        }
    }
}

我担心的真正原因是,在本书的这一章中,作者经常提到“旧式”Web 部件和“新式”Web 部件之间的区别,正如他对 Render 方法的评论中所指出的那样。

发生了什么?为什么我的默认 Web 部件的签名与作者不同?

4

1 回答 1

0

作者与“新型”Web 部件的区别在于它们是 ASP.NET 2.0 Web 部件(2005 年发布),可用于 SharePoint 和 ASP.NET。旧式 Web 部件特定于 SharePoint

  • 新样式System.Web.UI.WebControls.WebParts.WebPart,在 ASP.Net 2.0 (2005) 和 WSS 3.0 (2006) 中可用
  • 旧式Microsoft.SharePoint.WebPartPages.WebPart(仍受支持)

在问题的代码示例中,两个 Web 部件都是新样式,即。它们是 ASP.NET Web 部件。唯一的区别是视觉工作室覆盖了与本书不同的方法。但是,这两种方法以及许多其他方法,例如。OnLoad、OnInit 可用,并将对其进行自定义以使 Web 部件正常工作。

经过几个月的 web 部件开发,我的建议是使用第一个作为“hello world”web 部件的基础,即。

      protected override void CreateChildControls() 
    {
        base.CreateChildControls();
        Label label = new Label();
        label.Text = "Hello World";
        this.Controls.Add(label);
    }

然后开始向这个方法添加代码,或者添加其他方法(例如 OnLoad、OnPrerender)来添加功能。

Render方法不会在大多数 Web 部件中被覆盖。

于 2010-05-31T05:20:16.880 回答