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

C# 使用repo.find(int32.Parse)时,输入字符串格式不正确,c#,asp.net,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

我有以下代码:

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;
在上面的粗体和斜体行上运行代码时,我收到以下错误消息:

输入字符串格式错误


发生错误的原因是数据库中的单元格为空。这是正确的,因为并非所有条目都有一个值,因为ExistingClientTextBox不是需要数据库条目的必填字段。当数据库值为空时,是否有方法阻止发生此错误?

这是解析的特定行为。我们知道要抛出令人烦恼的异常:必须处理异常,如果不自己实现整个过程,就无法避免异常。由于taht太烦人,框架团队在Framework2.0中添加了TryParse

另见:

除了滤除空白情况外,TryParse将是明显的解决方案。 然而,正如其他人指出的,您的数据库设计可能会被破坏。首先,为什么一个数字被存储或传输为需要解析的字符串?某些行显然没有主键ID?

您可以尝试:

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

                }

我不希望clientname是整数..如果您使用并检查ConLeads.clientname的值,它会告诉您什么?同样相关的是:并非所有元素都有Id?听起来很奇怪,但还好。但是如果不是通过某些属性,您计划如何查找元素?如果值为空,您想做什么?我是否遗漏了什么,或者您只需要使用if!string.isNullOrEmptyConLeads.ClientName{这两行标记为***}