我有以下代码:
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不是需要输入数据库的强制字段。有没有办法在数据库值为空时停止发生此错误?
答案 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);
}