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

问题描述 投票:-2回答:2

我有以下代码:

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不是需要输入数据库的强制字段。有没有办法在数据库值为空时停止发生此错误?

c# asp.net
2个回答
0
投票

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

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

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

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


0
投票

你可以试试 :

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

                }
© www.soinside.com 2019 - 2024. All rights reserved.