在重新部署期间,如何处理自定义WebPart属性类型更新
-
16-10-2019 - |
题
我有一个定义的自定义webpart
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public DataSeries1 YSeriesType { get; set; }
已经部署了。然后,我将其更改为:
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public YSeriesType YSeriesType { get; set; }
现在,此更改导致错误表明DataSeries1找不到。如何处理此情况的升级? fwiw,以下 IVersioningPersonalizable
似乎没有用:
void IVersioningPersonalizable.Load(IDictionary unknownProperties)
{
if (unknownProperties == null)
return;
_dirty = true;
foreach (DictionaryEntry entry in unknownProperties)
{
switch (Convert.ToString(entry.Key))
{
case "YSeriesType":
this.YSeriesType = (YSeriesType)Enum.Parse(typeof(YSeriesType), Convert.ToString(entry.Value));
break;
}
}
}
protected override void OnInit(EventArgs e)
{
if (_dirty && null != base.WebPartManager)
{
SetPersonalizationDirty();
_dirty = false;
}
}
谢谢!
解决方案
您的iVersioningpersonalizizable代码看起来正确,但是我认为SharePoint以其名称确定未知属性,如果属性未重命名 - 它不会是未知的...
因此,您能否重命名ySeriestype属性并尝试再次执行升级?
其他提示
错误消息是指现有WebPart使用的类DataSeries1。因此,我猜您删除了(或重命名)此课程。
执行更新属性值的代码之后,您可以安全地删除DataSeries1类。