Статические типы нельзя использовать в качестве параметров - PullRequest
10 голосов
/ 05 января 2011

Я следую учебному пособию по музыкальному магазину MVC, но я только немного застрял с Html Helper в части 5: Часть 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) + "...";
            }
        }
    }
}

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

Ответы [ 5 ]

13 голосов
/ 05 января 2011

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

1 голос
/ 05 января 2011

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

1 голос
/ 05 января 2011

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

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

1 голос
/ 05 января 2011

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

0 голосов
/ 09 марта 2011

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

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

и добавить

using System.Web.Mvc;
...