VB MVC 앱에서 htmlhelper 메소드를 만들 수 없습니다
-
06-07-2019 - |
문제
다음 코드에서 내가 누락 된 내용을 알 수 없습니다. (더미) 도우미 확장을 추가 해야하는 메소드가 있습니다.
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#에 코드를 쓰면 아무런 문제가 없습니다.
마르코