2011-11-24 4 views
1

양식을 제출 한 후 사용자를 특정 주소로 리디렉션하려고합니다. www.x.com/Content/Business?Id=13컨트롤러 내에서 특정 URL로 리디렉션하는 방법은 무엇입니까?

내가 정말 :이 같은 URL을 생성

return RedirectToAction("Business", new RouteValueDictionary(new { controller = "Content", action = "Business", Id = business.BusinessID })); 

: 내가 사용하는 코드는 내 콘텐츠 컨트롤러에 다음과 같습니다 원하는 것은 다음과 같습니다. www.x.com/Content/Business/13

정말 쿼리 문자열을 구분하고 싶지 않습니까? 나머지 URL과 일치해야합니다.

어쨌든 그렇게 할만 큼 있습니까?

+0

참조 대답 : [MVC를 쿼리 문자열이없는 RedirectToAction] [1] [1] : http://stackoverflow.com/questions/5336536/redirecttoaction-without-querystring-mvc –

답변

2

코드는 실제로 같은 것이어야하지만,주의해야 할 것은 라우팅 테이블을 설정 한 Global.asax 파일에 있습니다. 그러면 원하는 결과를 얻을 수 있도록 다음 코드 조각이 있어야합니다. 세 번째 URL 매개 변수를 주목 {매개 변수}이 코드

routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{parameter}", // URL with parameters 
       new { controller = "Tokens", action = "Index", parameter = UrlParameter.Optional } // Parameter defaults 
      ); 

, 난 단지 내 코드에서 변수 대신 "ID"의 "매개 변수"를 사용해야합니다

return RedirectToAction("Business", new RouteValueDictionary(new { controller = "Content", action = "Business", parameter= business.BusinessID })); 

이 매우 중요하다 MapRout() 함수에서 정의한 변수와 동일한 이름을 사용하십시오.

이렇게, 내가 원하는 결과가 있습니다

www.x.com/Content/Business/13을

이 질문에서
+0

이것은 정확합니다. route에 정의 된 매개 변수의 이름은'new {}'에있는 속성의 이름과 일치해야합니다. –

0

코드 줄이 예상 한 링크를 생성합니까, 라우팅 설정이 정상입니까?

+0

네, 맞습니다. Id의 기본 이름을 매개 변수로 변경합니다. 내 컨트롤러 기능에서 같은 것을 변경해야합니다. 그런 식으로 문제가 해결되었습니다. – Ben

1

확인이 밖으로

리턴 RedirectToAction ("비즈니스", "내용", 새 {식 business.BusinessID});

+0

그것은 똑같은 일을합니다. 당신은 다른 오버로드를 호출하고 있습니다. –

관련 문제