Я пытаюсь добавить метод расширения в свой проект MVC 2, но безуспешно, и после нескольких часов поиска и поиска здесь я в растерянности.Я создал новый проект MVC 2, чтобы убедиться, что в моем существующем проекте нет ничего странного, и я все еще сталкиваюсь с той же проблемой.Я уверен, что в этой ситуации я «не вижу леса за деревьями», поэтому любая помощь будет принята с благодарностью.Вот код для метода расширения.
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, intellisense не показывает мой метод расширения Image, и если я запускаю проект, я получаю следующую ошибку:
CS0117: 'System.Web.Mvc.UrlHelper' does not contain a definition for 'Image'
Сначала я думал, что это так же просто, как не добавлятьссылка (оператор импорта), но это не так.Для меня очень странно то, что я могу добавить методы расширения к объекту HtmlHelper без проблем в этом же проекте.
Заранее благодарен за любую предоставленную помощь.