Статические типы не могут использоваться в качестве параметров

Я следую учебнику MVC Music Store, но я только немного застрял с Html Helper в части 5: Part 5.

Кажется, я до сих пор правильно следил за ним (пожалуйста, поправьте меня, если я ошибаюсь:))... однако я получаю следующую ошибку:

'musicStoreMVC.Helpers.HtmlHelper': статические типы не могут использоваться как Параметры

Вот код из моего приложения:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace musicStoreMVC.Helpers
{
    public static class HtmlHelper
    {
        public static string Truncate(this HtmlHelper helper, string input, int length)
        {
            if (input.Length <= length)
            {
                return input;
            }
            else
            {
                return input.Substring(0, length) + "...";
            }
        }
    }
}

Если кто-то может понять, что я делаю неправильно, или если вам нужна дополнительная информация, я был бы благодарен за указатели! Спасибо.

Ответ 1

Просто переименуйте свой статический класс HtmlHelper в HtmlHelperExtensions.

Ответ 2

У вас возник конфликт имен - один статический HtmlHelper, который вы укажете в примере кода и System.Web.Mvc.HtmlHelper, который является классом, на котором вы действительно хотите создать метод расширения. Просто переименуйте свой класс в HtmlHelpers (как в связанном учебнике). Как сейчас, вы пытаетесь реализовать метод расширения для статического класса, который, предположительно, не работает.

Ответ 3

Это потому, что вы назовете свой класс расширения HtmlHelper. В truncate вы затем пытаетесь добавить метод расширения к статическому классу, который вы не можете.

Простое решение - переименовать ваш HtmlHelper в нечто другое.

Ответ 4

this HtmlHelper helper говорит, что Truncate() должен действовать так, как если бы это был метод экземпляра на HtmlHelper, но вы объявили HtmlHelper как статический класс, который не может иметь экземпляры.

Если то, что вы пытаетесь сделать, это создать метод расширения в другом классе HtmlHelper, а затем, как предложили другие, переименуйте этот статический класс. Если вам нужен только статический метод, избавитесь от параметра this HtmlHelper helper. Вы все равно не используете его.

Ответ 5

Удалить используемую часть

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

и добавьте

using System.Web.Mvc;