2010-06-21 2 views
4

ASP.NET MVC 1.0 응용 프로그램을 2.0 릴리스로 업그레이드하는 중입니다. 일부 코드는 HtmlHelper를 렌더링해야하는 LinkExtensions를 사용해야합니다. 일부 코드가 MVC 모델을 올바르게 따르지 않아 필요에 따라 코드를 다시 작성하는 중임을 알고 있지만 작업 할 필요가있는 부분이 있으므로 응용 프로그램을 빌드하십시오.ASP.NET MVC 2.0에서 뷰 외부에서 HtmlHelper를 어떻게 만듭니 까?

public static HtmlHelper GetHtmlHelper(ControllerContext context) 
{ 
    return new HtmlHelper(new ViewContext(context, 
              new WebFormView("HtmlHelperView"), 
              new ViewDataDictionary(), 
              new TempDataDictionary()), 
          new ViewPage()); 
} 

다음과 같이 우리가지고 오류는 다음과 같습니다 :

오류 1 'System.Web 여기

는 ASP.NET MVC 1.0에서 작동 우리가 가지고있는 현재 구문입니다 .Mvc.ViewContext이 '4 개 인수

를 사용하는 생성자를 포함하지 않는

답변

5

additional argument which takes a TextWriter있다 :

var viewContext = new ViewContext(
    context, 
    new WebFormView("HtmlHelperView"), 
    new ViewDataDictionary(), 
    new TempDataDictionary(), 
    context.HttpContext.Response.Output 
); 

여기에서 질문은보기에서 제공되는 것을 사용하는 대신 htmlHelper 자신을 인스턴스화해야하는 이유는 무엇입니까?

+0

네, TextWriter 매개 변수를 알아 냈지만 어디서 왔는지는 확실하지 않았습니다. 감사합니다! 뷰에서이 작업을 수행하지 않는 이유와 관련하여 애플리케이션의 두 페이지는 LinkExtensions.ActionLink를 통해 DataTable의 정보를 기반으로 생성되는 상당히 복잡한 링크를 가지고 있습니다. 그러나 이것이 실제적으로 최선의 방법은 아니므로 링크를 처리하는 더 나은 방법을 찾고 있습니다 (대부분 사용자 정의 컨트롤). 지금 당장은 빌드하고 실행해야 할 것들이 필요하기 때문에 새로운 버전을 작업하면서 테스트를 다시 시작할 수 있습니다. – rjzii

2

4 개의 매개 변수를 사용하는 ViewContext의 생성자가 더 이상 없다는 오류 메시지가 제시하는 문제점이 있습니다. 그들은 다섯 번째 텍스트 작성자를 추가했습니다. 다음과 같이 viewcontext를 만들 수 있습니다 :

new ViewContext(context, 
             new WebFormView("HtmlHelperView"), 
             new ViewDataDictionary(), 
             new TempDataDictionary()), 
         new ViewPage(), context.HttpContext.Response.Output); 
관련 문제