1

データベース エントリの参照番号に基づいて、特定のデータベース エントリに関する情報を取得している Web ページがあります。この参照番号は 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 クエリ文字列が表示される) に備えて、リダイレクトを挿入できますが、正しく使用すると、クエリ文字列が null または空になることはありません。私が準備しようとしているのは、誰かがブックマークの時点で有効だったクエリ文字列で私の詳細ページをブックマークしたが、その後削除された場合です。

var "KidSpecific" が起動する前に、データベースにクエリ文字列と一致する参照番号があることを確認するにはどうすればよいですか? そのような参照番号がない場合は、Response.Redirect を使用して、現在表示されている空白の画面の代わりにエラー ページを表示できるようにする必要があります。

助けてくれてありがとう。

4

2 に答える 2

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();
        }
    }
}
于 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 に答える