Создание метода расширения в C # - PullRequest
3 голосов
/ 14 декабря 2010

Я пытаюсь создать метод расширения в C # для класса HtmlHelper. Я прочитал для этого страницу MSDN и уверен, что ссылаюсь на правильные пространства имен. Интересно, что я могу делать не так?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; //Correctly referencing the necessary namespaces, right?

namespace MvcApplication1.HelperMethods
{
    public static class NavigationalMenu
    {
        public static string MyMenu(this HtmlHelper helper)
        {
            CategoryRepository categoryRepo = new CategoryRepository();
            var categories = categoryRepo.FindAllCategories();

            foreach (Category c in categories)
            {
                helper.RouteLink(blablabla); //Construct links and return them.
            }

            //helper.RouteLink doesn't show up! C# wipeouuuuuttttt.
            //It's as if 'helper' doesn't have the RouteLink method there.
        }
    }
}

Впервые это происходит со мной при программировании на C #. Кто-нибудь еще сталкивался с этой проблемой?

Ответы [ 4 ]

4 голосов
/ 14 декабря 2010

Согласно MSDN :

Расширения класса HtmlHelper находятся в пространстве имен System.Web.Mvc.Html.Эти расширения добавляют вспомогательные методы для создания форм, рендеринга HTML-элементов управления, рендеринга частичных представлений, проверки ввода и т. Д.

Попытка включить пространство имен System.Web.Mvc.Html. LinkExtensions.RouteLink дает свое пространство имен как таковое (говорит, что оно в System.Web.Mvc.dll, просто в другом пространстве имен).

3 голосов
/ 14 декабря 2010

Вам нужно ссылаться на System.Web.Mvc для HtmlHelper, но расширение находится в System.Web.Mvc.Html.

0 голосов
/ 14 декабря 2010

Я не уверен, добавить пространство имен, см. Resukt System.Web.Mvc.Html

0 голосов
/ 14 декабря 2010

Ваше пространство имен может быть неправильным.Попробуйте using System.Web.Mvc.Html;

http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper(VS.90).aspx

...