缺少自定义 Web 部件属性,我的代码中缺少什么?
-
29-09-2020 - |
题
我正在使用 SharePoint 2013。我在 Visual Studio 2013 中开发了一个视觉 Web 部件。我已将此代码添加到我的 web 部件的代码隐藏中:
public partial class VisualWebPart1UserControl : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void CreateChildControls()
{
base.CreateChildControls();
}
[WebPartStorage(Storage.Shared)]
[Personalizable(PersonalizationScope.Shared)]
[FriendlyNameAttribute("Update interval")]
[Description("Insert feed update interval")]
[WebBrowsable(true)]
[Category("Message Configuration")]
public int UpdateInterval { get; set; }
}
我部署了 Web 部件。我将 Web 部件添加到我的主页。我单击编辑 Web 部件,然后在所有类别和属性的正上方查看。但我没有看到我的自定义类别“消息配置”。我还想念现有类别中的自定义属性“UpdateInterval”。
我的代码中是否遗漏了某些内容?我只想有一个自定义属性,以便站点管理员可以管理某些内容。
我在 SharePoint 中导出了我的 Web 部件。我在记事本++中打开了.webpart文件。我在下面看到了这一点。我没有看到自定义属性!
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="VisualWebPartProject1.VisualWebPart1.VisualWebPart1, VisualWebPartProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c139f77c8f6182b2" />
<importErrorMessage>Cannot import this Web Part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name="ExportMode" type="exportmode">All</property>
<property name="HelpUrl" type="string" />
<property name="Hidden" type="bool">False</property>
<property name="Description" type="string">My Visual Web Part</property>
<property name="CatalogIconImageUrl" type="string" />
<property name="Title" type="string">VisualWebPartProject1 - VisualWebPart1</property>
<property name="AllowHide" type="bool">True</property>
<property name="AllowMinimize" type="bool">True</property>
<property name="AllowZoneChange" type="bool">True</property>
<property name="TitleUrl" type="string" />
<property name="ChromeType" type="chrometype">Default</property>
<property name="AllowConnect" type="bool">True</property>
<property name="Width" type="unit" />
<property name="Height" type="unit" />
<property name="HelpMode" type="helpmode">Navigate</property>
<property name="AllowEdit" type="bool">True</property>
<property name="TitleIconImageUrl" type="string" />
<property name="Direction" type="direction">NotSet</property>
<property name="AllowClose" type="bool">True</property>
<property name="ChromeState" type="chromestate">Normal</property>
</properties>
</data>
</webPart>
</webParts>
解决方案
您是否确定您将项目创建为2013项目?它看起来你正在使用2010年的Web部件模板。 2013年,Visual WebPart是从WebPart继承的类。在2010年,有两个类,其中一个从Web部件继承,一个继承自用户组件的一个。 2010年,在加载UserControl的WebPart类中只有几行代码。因此,在2010年,这就是属性的位置(在WebPart类中,而不是UserControl类。)
所以,您的代码对于2013基础的Web部件看起来很好。
编辑:您的财产代码对于基于2013的Web部分看起来很好,但它从UserControl继承的事实意味着它是基于2010的Web部件。
其他提示
你忘记名字了(WebDisplayName
):
[WebBrowsable(true),
WebDisplayName("Text Input"), //<----------------Needs a name
WebDescription("This Accepts text Input"),
Personalizable(PersonalizationScope.Shared),
Category("My Category")]
public string TextProperty1 { get; set; }
尝试添加WebDisplayName("your field name")
并确保最终代码看起来像这样
[WebBrowsable(true),
WebDisplayName("Project ID"),
WebDescription("Enter Project Number"),
Personalizable(PersonalizationScope.Shared),
Category("Project Settings")]
public string ProjectID { get; set; }
.
此外,您还可以检查在SharePoint 2010-2013中的Visual WebPart创建自定义WebPart属性