首先,添加我们需要的属性到Address.cs文件中,Personalizable告诉Web Part framework去存储属性到数据库中,WebBrowsable属性高数web part framework在web part的编辑区显示属性:
namespace Images.Address
{
[ToolboxItemAttribute(false)]
public class Address : WebPart
{
// Visual Studio might automatically update this path when you change the Visual Web Part project item.
private const string _ascxPath = @"~/_CONTROLTEMPLATES/Images/Address/AddressUserControl.ascx";
[Personalizable(), WebBrowsable]
public String Firstname { get; set; }
[Personalizable(), WebBrowsable]
public String Lastname { get; set; }
[Personalizable(), WebBrowsable]
public String Street { get; set; }
[Personalizable(), WebBrowsable]
public int Zip { get; set; }
[Personalizable(), WebBrowsable]
public String City { get; set; }
protected override void CreateChildControls()
{
Control control = Page.LoadControl(_ascxPath);
Controls.Add(control);
}
}
}
现在我们可以查看web part在SharePoint中的显示结果,deploy当前的solution,添加创建的web part到一个SharePoint 的page上,点击“Edit Web Part”,我们可以看到定义的属性在“miscellaneous”下面,如图所示:
尝试在文本框中出入一些值,web part framework将会存储这些值到数据库中,并关联到web part。然而在web part中没有显示,我们需要添加control到“AddressUserControl.ascx”,添加control之前,对“AddressUserControl.ascx.cs”文件做如下修改:
public partial class AddressUserControl : UserControl
{
public Address WebPart { get; set; }
}
然后点击“Address.cs”文件,编辑CreateChildControls事件:
protected override void CreateChildControls()
{
Control control = Page.LoadControl(_ascxPath);
if (control != null)
{
((AddressUserControl)control).WebPart = this;
}
Controls.Add(control);
}
通过上述代码的改变,我们告诉AddressUserControl去填充在web part配置时的属性。这样我们就可以进入到在Address.cs文件中定义的属性。
最后添加control到AddressUserControl.ascx文件: