2012-07-18 2 views
3

저는 @heper pagination 기능을 가지고 있습니다. 그 중 두 명의 뷰 헬퍼 ViewBagUrl이 있습니다. 페이지 번호가 Views 인 에서 App_Code 폴더로 코드가 이동되도록이 페이지 번호가 많은 페이지에서 사용됩니다. 코드 내부 App_Code/Helper.cshtml@helper 코드를 App_Code 폴더로 이동하는 중 오류가 발생했습니다

@helper buildLinks(int start, int end, string innerContent) 
{ 
    for (int i = start; i <= end; i++) 
    { 
     <a class="@(i == ViewBag.CurrentPage ? "current" : "")" href="@Url.Action("index", "country", new { page = i })">@(innerContent ?? i.ToString())</a> 
    } 
} 

하지만 이제 앱을 실행할 때. 오류가 발생합니다

error CS0103:The name 'ViewBag' does not exist in the current context 
error CS0103:The name 'Url' does not exist in the current context 

네임 스페이스를 가져 오거나 문제가있는 위치를 가져와야합니까?

내가하고 싶은 방식이 완벽할까요?

답변

4

, 당신이 당신의 도우미에 매개 변수로 UrlHelper을 통과해야합니다

@helper buildLinks(int start, int end, int currentPage, string innerContent, System.Web.Mvc.UrlHelper url) 
{ 
    for (int i = start; i <= end; i++) 
    { 
     <a class="@(i == currentPage ? "current" : "")" href="@url.Action("index", "country", new { page = i })">@(innerContent ?? i.ToString())</a> 
    } 
} 

다음보기 fomr과 같이 호출 :

@Helper.buildLinks(1, 10, ViewBag.CurrentPage, "some text", Url) 
+0

Darin, @ akakey의 답장에 내 의견을 게시하면서 RequestContext에서 가져올 수 있다면 왜 URL을 전달하고 싶습니까? – ekkis

+0

currentPage를 매개 변수로 전달하고 싶지 않습니다. @akakey가 더 좋은 것을 찾았습니다. – Neshta

+0

아래 @akakey 대답을 참조하십시오.이 답변은 정답으로 표시되어야합니다. –

4

도우미를 App_Code로 옮긴 경우보기에서 함수에 ViewBag, UrlHelper, HtmlHelper을 전달해야합니다.

Ex. 을 App_Code보기에서

@helper SomeFunc(System.Web.Mvc.HtmlHelper Html) 
{ 
    ... 
} 

에서

HTML 도우미 기능, 마크 말했듯이

@SomeFunc("..", Html) // passing the html helper 
+0

내가 페이지의 상단에'using' 키워드를 사용할 수 있습니까? ?? –

+0

네, 그래도 사용할 수는 있지만 도우미 – VJAI

+0

에서 전달해야하는 도우미는 약간 두 줄의 코드를 보여줄 수 있습니까? –

12

그럼 실제로이 같은 App_Code 폴더 안에 헬퍼에서 ViewBag에 액세스 할 수 있습니다

@helper buildLinks() 
{ 
    var p = (System.Web.Mvc.WebViewPage)PageContext.Page; 

    var vb = p.ViewBag; 

    /* vb is your ViewBag */ 
} 
+0

이 답변이 가장 깨끗합니다. 나는 그것이 왜 그렇게 선정되지 않았는지 모르겠습니다. 완전성을 위해 @Url은 다음과 같이 액세스 할 수 있습니다. http://stackoverflow.com/questions/4522807/how-do-i-use-urlhelper-from-within-a-razor-helper – ekkis

+0

완벽하게! 고마워요! – Neshta

관련 문제