Свойство usercontrol int связывается с нулевым значением из базы данных - PullRequest
0 голосов
/ 01 декабря 2010

Я создал usercontrol в asp.net, и есть свойство, подобное следующему. Все работает нормально, когда связанное значение является целым числом. Однако, если связанное поле вернет ноль из базы данных, оно вернет недопустимую ошибку приведения.

изменение в обнуляемое int нежелательно, поскольку оно меняет способ работы программиста со свойством элемента управления в выделенном коде.

Просто интересно, как эти вещи должны быть реализованы? спасибо,

[DefaultValue(0)]
public int FixedLo
{
    get
    {
        if (ViewState["FixedLo"] != null)
            return Convert.ToInt32(ViewState["FixedLo"]);
        else
            return 0;
    }
    set
    {
        if (value == null)
            ViewState["FixedLo"] = 0;
        else 
            ViewState["FixedLo"] = value;
    }
}

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Будет ли проверка на DBNull добиваться цели?

[DefaultValue(0)]
public int FixedLo
{
    get
    {
        if (ViewState["FixedLo"] != null)
            return Convert.ToInt32(ViewState["FixedLo"]);
        else
            return 0;
    }
    set
    {
        if (value == null || value is DBNull)
            ViewState["FixedLo"] = 0;
        else 
            ViewState["FixedLo"] = value;
    }
}
0 голосов
/ 02 декабря 2010

Попробуйте проверить нулевое значение. Введите следующий код

if (value == DBNull.Value)

. Если проблема не устранена, сделайте свойство пустым, используя следующий код

public int? FixedLo
{
    get
    {
        if (ViewState["FixedLo"] != null)
            return Convert.ToInt32(ViewState["FixedLo"]);
        else
            return 0;
    }
    set
    {
        if (value == null || value == DBNull.Value)
            ViewState["FixedLo"] = 0;
        else 
            ViewState["FixedLo"] = value;
    }
}
...