コード ビハインド メソッドを使用して処理を行うボタンがあります。終了後、ユーザーを転送し、ルートデータ文字列を使用してそれに一致するすべての製品を取得する 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;
}
私が認めたいよりも長く修正を探していた場合。どんな助けでも大歓迎です。:)
ありがとう