ASP.NET конвертировать недопустимую строку в ноль - PullRequest
0 голосов
/ 14 сентября 2008

В моем приложении TextBox в FormView привязано к LinqDataSource следующим образом:

<asp:TextBox ID="MyTextBox" runat="server" 
             Text='<%# Bind("MyValue") %>' AutoPostBack="True" 
             ontextchanged="MyTextBox_TextChanged" />

protected void MyTextBox_TextChanged(object sender, EventArgs e)
{
    MyFormView.UpdateItem(false);
}

Это внутри UpdatePanel, поэтому любые изменения в поле немедленно сохраняются. Кроме того, значение MyValue равно decimal?. Это работает нормально, если я не введу строку, которая не может быть преобразована в десятичную в поле. В этом случае вызов UpdateItem выдает:

LinqDataSourceValidationException - Не удалось установить одно или несколько свойств для типа MyType. asdf не является допустимым значением для десятичного числа.

Я понимаю проблему, ASP.NET не знает, как преобразовать из «asdf» в десятичное ?. То, что я хотел бы сделать, это преобразовать все эти недопустимые значения в ноль. Каков наилучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 14 сентября 2008

Не знаком с ASP, но в .net не мог бы ты просто сделать что-то вроде

protected void MyTextBox_TextChanged(object sender, EventArgs e)
{ 
    Decimal d = null;
    TextBox tb = sender as TextBox;

    if(!Decimal.TryParse(tb.Text, out d))
    {
            tb.Text = String.Empty;
    }
    MyFormView.UpdateItem(false);
}
1 голос
/ 14 сентября 2008

Я думаю, что вы должны обработать событие Обновления LinqDataSource на своей странице. Проверьте правильность строк (используйте метод TryParse или что-то еще), а затем продолжите обновление базового класса.

(Редактировать: моя интуиция соответствует рекомендациям здесь )

...