2009-09-17 2 views
3

UrlHelper에 액세스 할 때 actionResult를 다음과 같은 문자열 (즉, 실제 URL)로 변환 할 수 있습니다. urlHelper.RouteUrl (actionResult.GetRouteValueDictionary());ActionResult를 정적 메서드의 URL 문자열로 변환

UrlHelper에 액세스 할 수없는 정적 방법으로 어떻게 동일한 작업을 수행 할 수 있습니까? 감사.

답변

6

System.Web.Mvc에 using 문을 추가하고 정적 메서드에서 UrlHelper 클래스의 인스턴스를 만듭니다.

+0

내가이 UrlHelper ... – pbz

+0

인스턴스화 귀하의 질문에 암시 수행 할 필요성을 인스턴스화하지 않고 사용할 수 어딘가에 숨겨진 무언가가 있었다 기대했다. 큰 수업이 아니에요. 리플렉터 (Reflector)를 사용하여 클래스에서 관련 코드를 들어 올릴 수 있다고 가정합니다. 그러나 이는 본질적으로 동일한 것입니다. –

+0

클래스를 인스턴스화하면 클래스를 초기 상태의 테스트 된 폼으로 사용하면 많은 이점을 얻을 수 있으며 모든 RouteUrl 오버로드에 액세스 할 수 있습니다. –

0

나는 이와 같은 방법으로 부분 결과를 렌더링했습니다.

private string RenderPartialViewToString(ControllerContext context, string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = context.RouteData.GetRequiredString("action"); 

     ViewData.Model = model; 

     using (StringWriter sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(context, viewName); 
      ViewContext viewContext = new ViewContext(context, viewResult.View, ViewData, TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    }