Привязка nullable интервала к asp:TextBox

У меня есть свойство int? MyProperty как участник в моем источнике данных (ObjectDataSource). Я могу связать это с TextBox, как

<asp:TextBox ID="MyTextBox" runat="server" Text='<%# Bind("MyProperty") %>' />

В основном я хочу получить a null значение, отображенное как пробел "" в TextBox и числе как число. Если TextBox является пробелом MyProperty буду установлен на null. Если TextBox имеет число в нем, MyProperty должен быть установлен на это число.

Если я пробую его, я получаю исключение: "Пробел не является допустимым Int32".

Но как я могу сделать это? Как работать с nullable свойствами и Связать?

Заранее спасибо!

5
задан Slauma 25 March 2010 в 22:35
поделиться

2 ответа

<asp:TextBox ID="MyTextBox" runat="server" 

Text='<%# Bind("MyProperty").HasValue ? Bind("MyProperty") : "" %>' />

Вы можете использовать HasValue, чтобы определить, имеет ли тип, допускающий значение NULL, значение NULL, а затем установить свойство Text.

1
ответ дан 14 December 2019 в 08:46
поделиться

Я начинаю верить, что невозможно привязать свойство значения, допускающее значение NULL. Пока я вижу только обходной путь: добавить дополнительное вспомогательное свойство для привязки обнуляемого типа:

public int? MyProperty { get; set; }

public string MyBindableProperty
{
    get
    {
        if (MyProperty.HasValue)
            return string.Format("{0}", MyProperty);
        else
            return string.Empty;
    }

    set
    {
        if (string.IsNullOrEmpty(value))
            MyProperty = null;
        else
            MyProperty = int.Parse(value);
            // value should be validated before to be an int
    }
}

, а затем привязать вспомогательное свойство к TextBox вместо оригинала:

<asp:TextBox ID="MyTextBox" runat="server"
    Text='<%# Bind("MyBindableProperty") %>' />

Я был бы рад увидеть другое решение.

2
ответ дан 14 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: