ASP.NET 转换无效串空
-
09-06-2019 - |
题
在我用我已经 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 - 未设置一个或更多性质上类型的指示.航空自卫队不是一个有效的值用十进制。
我理解这个问题,ASP.NET 不知道如何将从航空自卫队'到小数点?.什么我想要做的就是把所有这些无效的值为空。什么是最好的方式做到这一点?
解决方案
我觉得你应该处理的新事件的LinqDataSource在你的网页。做你的检查无效串(使用TryParse方法或一些东西)和然后继续与基类的更新。
(编辑:我的直觉行了什么样的建议 在这里,)
其他提示
不熟悉ASP,但在。净,你就不能做沿线的东西
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);
}
不隶属于 StackOverflow