2011-07-27 3 views
1

다른 페이지에 표시 할 통계보기가 있다고 가정 해 보겠습니다. 어떤 헬퍼없이 , 나는 다음과 같은 코드를 사용하여이 :렌더링 부분 뷰의 중복을 줄이기 위해 HtmlHelper 확장 메서드를 만들어야합니까?

@section Statistic{ 
    @Html.RenderAction("Index", "Statistic", new { id = Model.UserId }); 
} 

을하지만 도우미을 만드는, 내가 좋아하는 뭔가를 쓸 수 있습니다 :

@section Statistic{ 
    @Html.Stats().For(Model.UserId); 
} 

을 그리고 향후 컨트롤러, ActionName의 변화 또는의 매개 변수 통계 컨트롤러는 내 StatsHtmlHelper에있는 1 곳에서 변경해야합니다.

제 동료 중 일부는이 도우미가 RenderAction을 호출하지만 존재하지 않아야한다고 불평합니다. 당신의 의견 것입니다?

+0

나는 전에 그렇게 도우미를 보지 못했습니다. 'Stats()'는 무엇을 반환하며'For (Model.UserId)'는 무엇을 반환합니까? 왜 당신은 ** 헬퍼 메소드를 연결하고 있습니까? 이것은 HTML이 아닌 LINQ입니다. 그러나 당신의 질문에 대답하기 위해서 - 나는 당신의 동료들에게 동의합니다. 값을 추가하지 않으면 간단한 "래퍼"도우미의 핵심은 무엇입니까? – RPM1984

답변

3

도우미 메서드를 만들면 RenderAction, ActionLink 및 이러한 메서드를 호출하는 복잡성을 줄이고 "마법 문자열"을 제거 할 수 있습니다. 그러나 모든 다른 작업에 대해 접근 방식 (!)으로 다른 도우미를 만들어야합니다.이 경우 다른 복잡성이 생길 수 있습니다. 특히 이와 같은 경우에보다 간편하게 생활 할 수있는 커뮤니티 도구가있는 경우에는 더욱 그렇습니다. 통계를 위해 그렇게한다면, 어플 리케이션의 모든 다른 작업에 대해 왜 그렇게하지 않겠습니까? T4MVCRenderAction, ActionLink 오버로드를 사용하면 ActionResult을 허용합니다. 컨트롤러, 액션 또는 매개 변수 시그니처가 변경되면 마법 문자열을 제거하고 컴파일 타임 예외가 발생합니다. 컴파일러에서 정확한 위치에 오류가 표시되면 수정하는 것이 더 쉽습니다.

@{Html.RenderAction(MVC.Index.Statistic(Model.UserId));} 

을 그리고 T4MVC 방법은 일반적인 접근 방식은 다음과 같습니다 T4MVC으로, 통계 렌더링 라인이 될 것이다. 프로젝트 전반에 걸쳐 모든 단일 액션에 간단하게 사용할 수 있습니다.

관련 문제