문제

다음 코드에서 내가 누락 된 내용을 알 수 없습니다. (더미) 도우미 확장을 추가 해야하는 메소드가 있습니다.

Imports System.Runtime.CompilerServices

Namespace HtmlHelpers

    Public Module HelpExtensions

        <Extension()> _
        Public Function HelpMe(ByVal HtmlHelper As HtmlHelper) As String
            Return "<a>HELP</a>"
        End Function

    End Module

End Namespace

내 견해는 다음과 같습니다.

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<%@ Import Namespace="HtmlHelpers" %>
<asp:Content ID="indexContent" ContentPlaceHolderID="body" runat="server">
    <%=Html.HelpMe()%>
</asp:Content>

그러나 이것은 다음과 같은 오류를줍니다.

'HelpMe' is not a member of 'System.Web.Mvc.HtmlHelper'.

내가 뭘 잘못하고 있죠?

도움이 되었습니까?

해결책

가져 오기 네임 스페이스 지침이 트릭을 수행하지 않았는지 확실하지 않지만 추가했습니다.

<add namespace="MyProject.HtmlHelpers"/>

~로 <namespaces> Web.config의 섹션과 지금 작동 중입니다. 내가 한 적이 있다면

<%@ Import Namespace="MyProject.HtmlHelpers" %>

그것은 또한 효과가 있었을까요?

다른 팁

확장 방법을 사용하기 전에 솔루션 재건을 시도해 보셨습니까? 컴파일러가 내 확장 방법의 존재를 선택하려면 vb.net을 사용해야했습니다.

방금 해결책을 찾았을 것 같아요.

도우미 모듈이 있어야합니다 app_code 예배 규칙서.

GFRIZZLE가 말했듯이보기 폴더에 web.config에 네임 스페이스 참조를 추가하면 페이지가 올바르게 표시 될 수 있습니다. 그러나 Intellisense가 제대로 작동하도록 고객을 다시 시작해야했습니다. 나는 또한 명시 적으로 추가해야했다 Import 확장 모듈이있는 파일로 이미 전 세계적으로 가져온 네임 스페이스에 대한 명령문.

예를 들어, 확장 할 때 System.Web.Mvc.HtmlHelper 나는 줄을 추가해야했다

Imports System.Web.Mvc

오류없이 페이지가 표시되기 위해서는 응용 프로그램이 올바르게 컴파일되고 네임 스페이스가 프로젝트 참조 탭에서 확인되었다는 사실에도 불구하고.

문제는 MVC2와 MVC3을 모두 설치 한 것일 수 있습니다. 그렇다면 vb.net Visual Studio Throw AD 오류로 HTMLHELPER 사용자 정의를 작성하면 "YourClass"는 'System.Web.mvc.htmlHelper'의 구성원이 아닙니다.

그러나 페이지를 실행하면 잘 작동합니다.

이것은 해결책입니다.http://forums.asp.net/t/1694828.aspx/1

솔루션 1) 프로젝트를 MVC3 솔루션으로 업그레이드하여 MVC3 솔루션을 제거하지 않음 3) .NET 프레임 워크 변경 4.0 대신 3.5로 변경하십시오 (MVC3 비활성화) 솔루션 4) C#에 코드를 쓰면 아무런 문제가 없습니다.

마르코

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top