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 - فشل في تعيين خصائص واحدة أو أكثر على نوع mytype.asdf ليست قيمة صالحة لـ Decimal.
أتفهم المشكلة، ASP.NET لا يعرف كيفية التحويل من 'asdf' إلى النظام العشري؟.ما أود أن أفعله هو تحويل كل هذه القيم غير الصالحة إلى فارغة.ما هي أفضل طريقة للقيام بذلك؟
المحلول
أعتقد أنه يجب عليك التعامل مع حدث التحديث الخاص بـ LinqDataSource على صفحتك.قم بالتحقق من وجود سلاسل غير صالحة (استخدم طريقة TryParse أو شيء من هذا القبيل) ثم تابع تحديث الفئة الأساسية.
(يحرر:حدسي يتوافق مع ما هو موصى به هنا)
نصائح أخرى
لست على دراية بـ 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);
}