输入字符串格式不正确使用repo.find时出错(int32.Parse)

时间:2018-02-06 11:07:30

标签: c# asp.net

我有以下代码:

var ConLeads = repo.Find(Int32.Parse(Request.QueryString["id"]));

***var Customer = Custrepo.Find(Int32.Parse(ConLeads.ClientName));***

IDTextBox.Text = ConLeads.ID;
CreatedByTextBox.Text = ConLeads.CreatedBy;
***ExisitingClientTextBox.Text = Customer.Client_Name;***
NewClientTextBox.Text = ConLeads.PotentialClientName;
ContactNameTextBox.Text = ConLeads.ContactName;
IssueDateTextBox.Text = ConLeads.IssueDate;
DetailsTextBox.Text = ConLeads.Details;
ClientTelNoTextBox.Text = ConLeads.ClientTelNo;
ClientIDTextBox.Text = ConLeads.ClientName;

在Bold和Italic上面的行上运行我的代码时收到以下错误消息:

输入字符串格式不正确错误

发生错误的原因是数据库中的单元格为空。这是正确的,因为并非所有条目都具有值,因为ExisitingClientTextBox不是需要输入数据库的强制字段。有没有办法在数据库值为空时停止发生此错误?

2 个答案:

答案 0 :(得分:0)

这是解析的特定行为。知道扔“Vexing Exceptions”:你必须处理的例外情况,如果没有实现整个事情yoruself就无法避免。由于太烦人,Framework团队在Framework 2.0中添加了TryParse()。

另请参阅:http://blogs.msdn.com/b/ericlippert/archive/2008/09/10/vexing-exceptions.aspx

除了过滤掉“空白”的情况,TryParse将是明显的解决方案。

然而正如其他人指出的那样,您的数据库设计可能会被破坏。对于初学者,为什么要将数字存储或传输为需要解析的字符串?有些行显然没有主键(ID)吗?

答案 1 :(得分:0)

您可以尝试:

int result;
if(int.TryParse(Request.QueryString["id"], out result))
                {
                   var ConLeads = repo.Find(result);

                }