如何在c#for ASP.NET中针对sql数据库检查非空查询字符串?

时间:2013-02-18 20:20:55

标签: asp.net c#-4.0

我有一个网页,它根据该数据库条目的引用号提取有关特定数据库条目的信息。此参考编号不是SQL ID编号,而是我们在输入时分配的编号。

此参考编号以查询字符串的形式传递给页面,只要参考编号实际存在于数据库中,一切都很好。但是,如果参考编号不存在,我的详细信息页面会显示为空白:无例外或任何其他内容。

我不确定在这种情况下分享我的代码有多相关,但我会安全地玩:

protected void Page_Load(object sender, EventArgs e)
{
    using (KidsEntities detailEntities = new KidsEntities())
    {
        string imgPath = ConfigurationManager.AppSettings["imagePath"];
        string KidNum = Request.QueryString["ChildNum"].ToString();

        var KidSpecific = from Kid in detailEntities.Kids
                          where Kid.Number == KidNum
                          ... ;

        DescRepeater.DataSource = KidSpecific.ToList();
        DescRepeater.DataBind();
    }
}

我可以进行重定向,以防一些小丑试图调出我的详细信息页面而不通过主目录(这将显示一个空查询字符串),但如果使用正确,我的查询字符串将永远不会为null或空。我正在准备的是,如果有人使用在书签时有效的查询字符串为我的详细信息页面添加书签,但随后会被删除。

如何在var“KidSpecific”触发之前检查数据库中是否有与查询字符串匹配的引用号?如果没有这样的参考号,我需要能够使用Response.Redirect来建立错误页面,而不是现在显示的空白屏幕。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用string.IsNullOrEmpty检查查询字符串,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    using (KidsEntities detailEntities = new KidsEntities())
    {
        string imgPath = ConfigurationManager.AppSettings["imagePath"];
        string KidNum = Request.QueryString["ChildNum"].ToString();

        if ( string.IsNullOrEmpty ( KidNum ) ) {
            Response.Redirect ( "WhatEverURI" );
        } else {
            var KidSpecific = from Kid in detailEntities.Kids
                      where Kid.Number == KidNum
                      ... ;

            DescRepeater.DataSource = KidSpecific.ToList();
            DescRepeater.DataBind();
        }
    }
}

答案 1 :(得分:0)

为什么在查询触发之前需要进行检查?您必须以任一方式检查数据库中的条目。如果您的查询出现空白,请尝试重定向:

protected void Page_Load(object sender, EventArgs e)
{
    using (KidsEntities detailEntities = new KidsEntities())
    {
        string imgPath = ConfigurationManager.AppSettings["imagePath"];
        string KidNum = Request.QueryString["ChildNum"].ToString();

        var KidSpecific = from Kid in detailEntities.Kids
                          where Kid.Number == KidNum
                          ... ;

        var KidSpecificList = KidSpecific.ToList();

        //Redirect if there are no results!
        if (KidSpecificList.Count() < 1)
            Response.Redirect("RedirectPage.aspx");

        DescRepeater.DataSource = KidSpecificList;
        DescRepeater.DataBind();
    }
}