문제

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가있을 수 있습니다.

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