2010-02-24 3 views
2

는 최근 VS.NET 2010/C# 4.0VS.Net 2008/C# 3.5에서 내 ASP.Net MVC 1 애플리케이션을 마이그레이션..Net 4/VS 2010에서 LinkBuilder.BuildUrlFromExpression이 더 이상 작동하지 않습니까?

강력한 형식의 호출에서 URL 문자열을 가져 오기 위해 빌더를 대량으로 사용했습니다. 그것은 다음과 같습니다

// sample call : 
string toSamplePage = Url.To<SampleController>(c => c.Page(parameter1, parameter2)); 
코드는 기본 UrlHelper의 확장으로 추가됩니다

:

public static string To<Tcontroller>(UrlHelper helper, Expression<Action<Tcontroller>> action) where Tcontroller : Controller 
{ 
    // based on Microsoft.Web.Mvc.dll LinkBuilder 
    return LinkBuilder.BuildUrlFromExpression<Tcontroller>(helper.RequestContext, helper.RouteCollection, action); 
} 

이의 유일한 문제, Microsoft.Web.Mvc의 DLL에 대한 참조입니다 , 그러나 가독성의 이득은 그만한 가치가있었습니다.

문제 : 더 이상 작동하지 않으며 매개 변수가 무엇이든 반환합니다 (null).

질문 :

  1. 표현의 링크를 구축하기 이제 더 나은 방법이 무엇입니까? (예, 성공하지 않고 시도해 보았습니다.)

  2. 이전 LinkBuilder.BuildUrlFromExpression을 사용하는 것이 트릭입니까? C# 4.0으로 다시 컴파일하려고했지만 문제는 옵션이 아닌 내 컴파일 된 버전의 System.Web.Mvc에서 작동한다는 것을 의미합니다. 귀하의 제안에 대한

나는 현재 MVC 2로 마이그레이션하기 위해 노력하고있어하지만 난 여전히 문제가 ... 기다리는 중 ...

답변

0

오키, 나는이 문제를 발견했다.

버전 문제가 발생했습니다. Microsoft.Web.Mvc + unistalling MVC 1 +를 다시 작성한 후 모든 참조를 새로 고친 후 마침내 다시 작업했습니다.

다른 프로젝트에서 MVC 1이 여전히 필요하기 때문에 짜증나지만, 적어도 내 주요 문제는 해결되었습니다. MVC의 프레임 워크에 대한 새로운 개발자와로

는 : 2/VS.Net 2010/C# 4.0

2

우리 팀 시스템 (마이크로 소프트) .Web.Mvc 2.0.0.0 정적을 참조하여이 동일한 문제를 극복 MVC와 직접 시작하는 것을 고려 라이브러리 폴더에는 GAC 참조와 반대입니다. 이로써 우리는 MVC 1.0.0.0 프로젝트 작업을 계속할 수 있었고 MVC 2를 우리 서버에 설치할 필요가없는 다운 스트림 이점도 얻을 수있었습니다.

관련 문제