int tryparse Error的最佳重载方法匹配

时间:2014-05-20 13:47:10

标签: asp.net textbox tryparse overloaded-strings

我只是想尝试这样做,所以稍后当我在数据库中保存我的值时,它们应该设置为null,因为textfield是空的。

    int? DeliveryAdrID = null;
    int.TryParse(TextBoxDeliveryAdrID.Text, out DeliveryAdrID);

但我在解析它时遇到错误。

以上解决方案稍后可以将数据库中的空文本框值保存为“NULL”而不是0。

整个解决方案:

    int parsedValue;
    int? DeliveryAdrID = int.TryParse(TextBoxDeliveryAdrID.Text, out parsedValue) ? parsedValue : (int?)null;

    int id = Convert.ToInt32(GridViewData.SelectedValue.ToString());
                var data = tf.DBTable.Where(a => a.ID == id).FirstOrDefault();
                if (data == null)
                {
                    DBTable mt = new DBTable();
                    mt.Customer = TextBoxCustomer.Text;
                    mt.Country = TextBoxCountry.Text;
                    mt.DeliveryAdrID = parsedValue;
                    tf.DBTable.AddObject(mt);
                    tf.SaveChanges();
                }
                else
                {
                    data.Customer = TextBoxCustomer.Text;
                    data.Country = TextBoxCountry.Text;
                    data.DeliveryAdrID = parsedValue;
                    tf.SaveChanges();
              }
            }

1 个答案:

答案 0 :(得分:1)

你不能给int.TryParse一个可以为空的int。它必须是一个int。你想要做的事情可以这样完成:

int parsedValue;
int? DeliveryAdrID = int.TryParse(TextBoxDeliveryAdrID.Text, out parsedValue) ? parsedValue : (int?) null;