1

我有一个网页,它根据该数据库条目的参考号提取有关特定数据库条目的信息。此参考编号不是 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();
    }
}

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

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

提前感谢您的帮助。

4

2 回答 2

0

您可以像这样使用 string.IsNullOrEmpty 检查 quety 字符串:

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();
        }
    }
}
于 2013-02-18T20:26:15.057 回答
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();
    }
}
于 2013-02-18T20:26:38.583 回答