ASP.NET Convertir la Cadena no Válido de Null
-
09-06-2019 - |
Pregunta
En mi aplicación tengo TextBox
en un FormView
enlazado a un LinqDataSource
así:
<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);
}
Este es el interior de un UpdatePanel
por lo que cualquier cambio en el campo es inmediatamente persistió.Además, el valor de MyValue
es decimal?
.Esto funciona bien a menos que yo escriba cualquier cadena que no puede ser convertido a decimal en el campo.En ese caso, el UpdateItem
llamar a los tiros:
LinqDataSourceValidationException - No se pudo establecer una o más propiedades de tipo MyType.asdf no es un valor válido para el separador Decimal.
Entiendo el problema, ASP.NET no sabe cómo convertir de 'asdf' a decimal?.Lo que me gustaría hacer es convertir todos estos valores no válidos nulos.¿Cuál es la mejor manera de hacer esto?
Solución
Creo que se debe controlar la Actualización de los eventos de la LinqDataSource en su página.Haga su cheque de cadenas no válidas (el uso de un método TryParse o algo) y, a continuación, continuar con la clase base de la actualización.
(Edición:Mi intuición líneas con lo que se recomienda aquí)
Otros consejos
No familiarizado con ASP, pero en .neta, no podía simplemente hacer algo a lo largo de las líneas de
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);
}