2010-07-31 2 views
2

MVC 2 프로젝트에 확장 메서드를 추가하려고합니다. 몇 시간 동안 인터넷을 검색하고 여기를 보았습니다. 나는 새로운 MVC 2 프로젝트를 만들어 내 기존 프로젝트에 이상한 점이 없도록하고 여전히 같은 문제에 직면하고있다. 나는 이것이 나무의 숲을 볼 수없는 상황이라는 것을 확신합니다. 그래서 어떤 도움도 크게 감사 할 것입니다. 다음은 확장 메소드의 코드입니다.UrlHelper 확장 메서드가 작동하지 않습니다.

using System.Web.Mvc; 

namespace ExtensionTest.Helper 
{ 
    public static class UrlExtensions 
    { 
     public static string Image(this UrlHelper helper, string fileName) 
     { 
      return helper.Content("~/Content/Images/" + fileName); 
     } 

    } 
} 

여기 뷰 (새로운 MVC 2 프로젝트에 대해 기본적으로 만들어 표준 홈 인덱스보기) 디자인 모드에서

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 
<%@ Import Namespace="ExtensionTest.Helper" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Home Page 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <%= UrlHelper.Image("test") %> 
    <h2><%: ViewData["Message"] %></h2> 
    <p> 
     To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>. 
    </p> 
</asp:Content> 

, 내가 UrlHelper를 입력 할 때, 인텔리이 표시되지 않습니다에있는 코드입니다 내 확장 메서드 이미지와 나는 다음과 같은 오류 얻을 프로젝트를 실행하는 경우 : 처음에는

CS0117: 'System.Web.Mvc.UrlHelper' does not contain a definition for 'Image' 

나는 그것이 단순하게 생각을 참조 (import 문)을 추가하지,하지만가 나타나지 않는 등 그럴 수있다. 정말 이상한 점은 동일한 프로젝트에서 아무런 문제없이 확장 메소드를 HtmlHelper 객체에 추가 할 수 있다는 것입니다.

제공된 도움말을 미리 감사드립니다.

+0

분명히 "이미지"보다 흔하지는 않지만 ... 결과가 다른지 확인하기 위해 "MyImage"또는 "TestImage"일 가능성이 있습니까? – JcMaltaDev

답변

1

.NET의 확장 메서드는 개체 인스턴스에서 호출해야하며 정적 인 경우에도 클래스 자체에서 호출하면 안됩니다.

그래서 대신 :

시도
<%= UrlHelper.Image("test") %> 

: 나는 매우 바쁜 하루 동안 테스트 빌드 노력없이 즉각적인 해결책이 없다 ...하지만 당신이 도우미 함수의 이름을 바꾸는 시도가

<%= Url.Image("test") %> 
+0

LOL! 확실히 나무 시나리오를위한 숲이 빠져 있습니다. 얼마나 창피한 ... 고마워! –