0

コード ビハインド メソッドを使用して処理を行うボタンがあります。終了後、ユーザーを転送し、ルートデータ文字列を使用してそれに一致するすべての製品を取得する Redirect.Response があります。

代わりに、ユーザーを宛先 URL ([ドメイン]/ScreeningDateTime/a38eceeb-5753-4156-ae2d-6a74cf7fef1e-64722426) に適切に転送しますが、RouteData 文字列に一致する結果だけでなく、そのテーブルからのすべての結果を表示します。

[domain]/ScreeningDateTime?id=1 と入力すると、正しく動作するようになりました。デバッグ (VS2013.3Pro) で InternalId を固定すると、最初のページに文字列 "a38eceeb-5753-4156-ae2d-6a74cf7fef1e-64722426" が正しく表示されます。ScreeningDateTime ページでは、そうではありません。

簡潔にするためにいくつかのものを削除したコード (同じ結果で表示されるのでテストしました):

最初のページから

Response.Redirect(
            GetRouteUrl("ScreeningsByDateTimeRoute", new { internalId = InternalId }));

Global.asax から

    void RegisterCustomRoutes(RouteCollection routes)
    {
        routes.MapPageRoute(
        "ScreeningsByDateTimeRoute",
        "ScreeningDateTime/{internalId}",
        "~/ScreeningDateTime.aspx"
        );

        *More Routes*

ScreeningDateTime コード ビハインド (宛先ページ) から:

    public IQueryable<Screening> GetProducts(
        [QueryString("id")] int? id,
        [RouteData] string internalId)
    {
        var _db = new ProductContext();
        IQueryable<Screening> query = _db.Screenings;

        if (id.HasValue && id>0)
        {
            query = query.Where(p => p.ScreeningID == id);
        }

        if (!String.IsNullOrEmpty(internalId))
        {
            query = query.Where(p =>String.Compare(p.InternalId,internalId) == 0);
        }
        return query;
    }

私が認めたいよりも長く修正を探していた場合。どんな助けでも大歓迎です。:)

ありがとう

4

1 に答える 1