protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["id"] != "" )
{
SqlConnection con = new SqlConnection("Data Source=(local)\\SQLEXPRESS; Initial Catalog=stan; Integrated Security=True"); //创建连接
con.Open(); //打开连接
string strsql = "select * from news where id = '" + Request.QueryString["id"] + "'"; //查询数据
SqlDataAdapter da = new SqlDataAdapter(strsql, con);
DataSet ds = new DataSet(); //填充数据
int count = da.Fill(ds, "table");
if (count > 0)
{
Label1.Text = ds.Tables["table"].Rows[0]["title"].ToString(); //填充控件
Label2.Text = ds.Tables["table"].Rows[0]["content"].ToString(); //填充控件
Label3.Text = ds.Tables["table"].Rows[0]["author"].ToString(); //填充控件
Label4.Text = ds.Tables["table"].Rows[0]["time"].ToString(); //填充控件
}
else
{
Response.Redirect("default.aspx"); //页面跳转
}
}
else
{
Response.Redirect("default.aspx");
}
} ASP.NETlabel数据库
if (!String.IsNullOrEmpty(Request.QueryString["id"]))
{
}
试试,如果还是执行 else 那么就是你的 Request.QueryString["id"] 没有任何值了。
里面的else应该跳转到一个提示页面,外面的else,跳转到另外个页面,起码这样你知道是什么问题,把这个区分好再来问
比如: else
{
Response.Redirect("DBNull.html"); //起码这样你知道是什么问题
}
}
else
{
Response.Redirect("no-pars.html");//参数有误的情况下
}
} //同时调用这种方法来判断URL参数比较保险
#region 检查URL参数类型、URL参数转义protected void Page_Load(object sender, EventArgs e)
{
if (IsInt(Request.QueryString["id"]))
{
//参数正常
}
else
{
//参数有误
}
} /// <summary>
/// 检查参数是否是数字类型
/// </summary>
/// <param name="queryStringID">Url参数</param>
/// <returns></returns>
public bool IsInt(string queryStringID)
{
bool result = false;
if (string.IsNullOrEmpty(queryStringID))
{
result = false;
}
else
{
Regex RegNumber = new Regex("^[1-9][0-9]*$");
Match m = RegNumber.Match(queryStringID);
if (m.Success)
{
result = true;
}
} return result;
}
{
}
试试,如果还是执行 else 那么就是你的 Request.QueryString["id"] 没有任何值了。
if (ds.Tables.Count > 0)
另外你代码里面有两个else,你也没说老是走哪个else啊,走第一个else表示你的request没取到值,你赶紧去看下你怎么传的是不是加id那个名字,如果走第二个else则去看下你的sql是否查询到值了,你去监测一下你的ds里面是不是有内容啊。
改成这样,试看看
da.Fill(ds, "table");
int count = ds.Tables.Rows.Count;