코드 숨김 메소드를 사용하는 버튼이 있습니다. 마무리 후 사용자에게 전달하고 경로 데이터 문자열을 사용하여 일치하는 모든 제품을 가져와야하는 Redirect.Response가 있습니다.Redirect.Response하지만 [RouteData] 문자열에 할당되지 않은 경로 문자열 추가
대신 제대로 도착 URL을 사용자에게 전달한다 ([도메인]/ScreeningDateTime/a38eceeb-5753-4156-ae2d-6a74cf7fef1e-64722426), 그러나 단지 테이블의 모든 결과를 표시하는 대신에은으로 RouteData 매칭 결과 끈.
몇 가지 사항에 대해 알아 보았습니다. [domain]/ScreeningDateTime? id = 1을 입력하고 제대로 작동하도록 할 수 있습니다. Debug (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;
}
필자가 인정하는 것보다 오랫동안 수정 프로그램을 찾은 경우. 어떤 도움이라도 대단히 감사하겠습니다. :) 난 항상 Page.RouteData.Values[variableName]
로 .aspx.cs
에서 경로 변수를 액세스 한
감사합니다. 성공하지 않으려 고 노력했다. InternalId 값이 계속 null을 표시합니다. 내 경로 설정에 문제가있는 것 같지만 잘 모르겠습니다. 적절한 URL로 라우트되지만, 일단 페이지가 "ScreeningDateTime/{InternalId}"의 "{InternalId}"부분을 routedata에 지정하지 않습니다. 한번 거기처럼 그것은 단지 null로 리셋된다. – ZombieBunnies
해당 함수가 다른 클래스/라이브러리에있는 경우 해당 함수를 페이지 자체로 이동하여 작동하는지 확인할 수 있습니까? – MikeSmithDev
@ZombieBunnies가 잠재적 인 경로/URL 충돌에 대한 업데이트를 추가했습니다. – MikeSmithDev