You have 2 issues here.
1) The name of your field in the querystring would be better written without the @ symbol.
2) If the querystring argument specified does not exist, then it returns an empty string which is an invalid format for the Convert.ToInt32 method.
To fix this, wrap the querystring argument retrieval like this.
int id;
if( Request.QueryString["ID"] != null )
{
if( !Int32.TryParse( Request.QueryString["ID"].ToString(), out id )
id = 0;
}
else
{
id = 0;
}
Your call would look something like
http://www.YourSite/YourPage.aspx?ID=100
If someone accidentally uses something like
http://www.YourSite/YourPage.aspx?ID=100
then the code above will still work.