Установка значения для поля в XPO

Если я хочу присвоить значение по умолчанию для поля BO при его сохранении (в моем классе контроллера), как я могу добиться этого с помощью C# и xaf? Какие события актуальны?


person bilgestackoverflow    schedule 08.06.2015    source источник


Ответы (2)


Вы можете использовать метод OnSaving

public class MyObject:XPObject
{
    protected override void OnSaving()
    {
       if(this.Session.IsNewObject(this))
             //SetDefaultValues
       base.OnSaving();
     }
}
person George Vovos    schedule 08.06.2015
comment
Спасибо большое. Как новичок, я не могу построить правильную логику. Как я могу получить правильный бизнес-объект, например, класс контактов? Нужно ли использовать IObjectSpace? - person bilgestackoverflow; 08.06.2015
comment
Ваш класс Contact наследуется от какого класса? - person George Vovos; 08.06.2015
comment
Я использую этот BusinessObject из другого модуля, поэтому у меня нет прямого доступа к его классу. Вот почему я буду обрабатывать это в классе контроллера - person bilgestackoverflow; 08.06.2015
comment
Он наследуется от класса XPBaseObject. - person bilgestackoverflow; 08.06.2015
comment
Если у вас нет доступа к этому классу, мое решение вам не подходит, покажите нам код в вашем контроллере. - person George Vovos; 08.06.2015

Я решил проблему, добавив этот код в свои переопределенные методы сохранения:

    private void ProcessSelectedObject(System.Collections.IList list)
    {
        foreach (object obj in list)
        {
            if (obj is Contact)
            {
                if (((Contact)obj).Sector == null)
                {
                    ((Contact)(obj)).Sector = "Default";
                }
            }
        }
     }
person bilgestackoverflow    schedule 09.06.2015