0

私は次のLinqDataSourceを持っています:

<asp:LinqDataSource ID = "agreementDs"
                    ContextTypeName = "AdministrationDataContext"
                    TableName = "Agreements"
                    runat = "server"
                    EnableUpdate = "true"                        
                    Where = "AgreementId=@AgreementId">

    <WhereParameters>
        <asp:QueryStringParameter QueryStringField = "AgreementId" 
                                  Name = "AgreementId"
                                  Type = "Int32"
                                  DefaultValue = "-1" />
    </WhereParameters>                        
</asp:LinqDataSource>    

契約データベーステーブルから1行をフェッチすることになっています。パラメータAgreementIdが-1であるかどうかを検出するにはどうすればよいですか。その場合、404ページを提供するか、ユーザーをサイトのフロントページにリダイレクトしますか?このロジックをコードビハインドに挿入するのが正しい場所がわかりません。

更新:ユーザーをリダイレクトする必要があるのは、AgreementIdパラメーターが-1の場合だけではありません。これは、データソースに行が含まれていない場合に常に発生するはずです。

4

1 に答える 1

1

「OnSelecting」メソッド名をLINQデータソースに追加し、そのメソッドから必要なものを確認します。

<asp:LinqDataSource runat="server" OnSelecting="ldsSelecting" .... />

protected void ldsSelecting(object o, LinqDataSourceSelectEventArgs e)
{
     // check for query string or other stuff here, redirect if needed
}
于 2011-11-18T15:20:58.630 に答える