내 htmlhelper 확장자가 작동하지 않는 이유는 무엇입니까?
-
03-07-2019 - |
문제
ASP.NET MVC 웹 사이트를 구축하고 있습니다. 하나의 프로젝트에 모든 것을 갖지 않고, 나는 웹, 모델 및 컨트롤러를 동일한 솔루션의 다른 프로젝트로 분리하기로 결정했습니다.
참조는 다음과 같습니다.
웹 --- [참조] ---> 컨트롤러 --- [참조] ---> 모델
이제 HTMLHELPER 클래스에 2 가지 사용자 정의 방법을 추가하고 싶었습니다. "ContuartCript"및 "IncludEstyle"이라고합니다. 각각 단일 문자열 매개 변수를 사용하고 각각 스크립트 또는 링크 태그를 생성합니다.
웹의 문서에 따라 익스텐더 클래스를 만들고 두 가지 방법을 작성하고 응용 프로그램을 컴파일했습니다.
이제 내가 공개적으로 갈 때 마스터 페이지 (메인 마스터 페이지 와이 방법을 사용하려는 장소 중 하나)는 다음과 같은 코드를 입력 할 수 있습니다.
<%= Html.IncludeScript("\js\jquery.js") %>
IntelliSense가 집어 들고 설명 방법을 포함하고 구문을 잘 보여줍니다. 그래서 나는 모든 것이 효과가있을 것으로 기대합니다.
그러나 그렇지 않습니다.
모든 것이 컴파일되지만 응용 프로그램을 실행하자마자 Default.aspx.cs의 14 행에서 다음 런 타임 오류가 발생합니다.
c:\\Projects\\PhoneReel\\PhoneReel.Web\\Views\\Shared\\Public.Master(11): error CS0117: 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'IncludeScript'
오류가 발생하는 코드 줄은 다음과 같습니다.
httpHandler.ProcessRequest(HttpContext.Current);
여기서 잘못 될 수있는 아이디어가 있습니까?
해결책
확장자의 네임 스페이스가 당사의 견해에 액세스 할 수 있는지 확인하십시오. 당신은 당신의 견해에 이것을 필요로합니다.
<%@ Import Namespace="MyRootNamespace.NamespaceForMyHtmlHelperExtensions"%>
또는 웹 구성 네임 스페이스 섹션에서 다음과 같습니다.
<add namespace="MyRootNamespace.NamespaceForMyHtmlHelperExtensions"/>
다른 팁
사용하는 경우 강력하게 입력했습니다 뷰 및 확장 방법이 확장되고 있습니다 HtmlHelper<object>
, 확장을 찾지 못할 것입니다. 당신은해야합니다 일반적인 익스텐더를 만듭니다 확장하려면 HtmlHelper<T>
.
public static string IncludeScript<T>(this HtmlHelper<T> html, string url) {
return "<script type=\"text/javascript\" src=\"" + url + "\"></script>";
}
그러면 익스텐더 방법이 나타나는 것을 볼 수 있습니다.
도움이되기를 바랍니다.
페이지에 Extensions Methods 네임 스페이스에 대한 가져 오기 지시문이 있어야합니다.
그렇지 않으면 Visual Studio가 볼 수 있지만 웹 사이트는 할 수 없습니다.
컴파일러가 .NET Framework 3.5로 설정되어 있습니까? 부주의하게 컴파일러를 .NET Framework 2.0으로 설정했을 때 이것은 나에게 일어났습니다.
contacturection 메소드에서 확장중인 내용이 System.Web.mvc.htmlHelper인지 확인하십시오. 다른 네임 스페이스에는 htmlhelper가있을 수 있습니다.