Сохранение коллекции, поддерживаемой viewstate в CompositeControl - PullRequest
1 голос
/ 28 апреля 2010

Возможно, это был долгий день, но у меня возникли проблемы с сохранением коллекции, поддерживаемой ASP.NET ViewState, в CompositeControl. Вот упрощенная версия:

public class MyControl : CompositeControl
{
  public Collection<MyObject> MyObjectCollection
  {
    get { 
      return (Collection<MyObject>)ViewState["coll"] == null ? 
        new Collection<MyObject>()
        : (Collection<MyObject>)ViewState["coll"];
    }
    set { ViewState["coll"] = value; }
  }
}


public partial class TestPage : System.Web.UI.Page
{
  protected void btn_Click(object sender, EventArgs e)
  {
      myControl1.MyObjectCollection.Add(new MyObject());
  }
}

Когда кнопка нажата, обработчик события btn_Click выполняется нормально, но установщик MyObjectCollection никогда не вызывается, поэтому новый MyObject () никогда не сохраняется.

Я думаю, у меня просто блондин. Кто-нибудь хочет помочь?

1 Ответ

1 голос
/ 28 апреля 2010

Вызов Add() для вашей коллекции - это не то же самое, что вызов сеттера для свойства MyObjectCollection.

По этой причине такие инструменты, как FxCop, предполагают, что у вас нет сеттеров в свойствах Коллекции - либо сделайте сеттер частным, либо удалите его полностью.

Возможно, вам потребуется реализовать собственный тип коллекции и переопределить методы Add и Remove, чтобы при их вызове выполнялся постоянный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...