我有一个定义的自定义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类。

许可以下: CC-BY-SA归因
scroll top