Hi,
There are a number of problems with your code.
The biggest problem is you are trying to use Response.Write in an error handler and this also throws an error. You should not use Response.Write from code behind except under special circumstances, this is not classic ASP. You need to understand the page rendering model where controls are built into a control tree and then rendered recursively. You break the control tree with this Response.Write. You could put a Label control on the page and then set the .Text property of the label to show your error.
Instead of wrapping a try catch around:
int iID = Convert.ToInt32(Request.QueryString["MyID"].ToString());
you should check for the existence of the query string param first, we have a helper method that can do it for you, you pass in a default value in case the param is not there.
int foo = WebUtils.ParseInt32FromQueryString("foo", -1);
also the line
lblTitle.Text = dt_multiplacetourinfo_one.Rows[0]["TourTitle"].ToString();
will throw an error because dt_multiplacetourinfo_one is null
Hope it helps,
Joe