静态类型不能用作参数

时间:2011-01-04 21:40:53

标签: c# asp.net-mvc html-helper

我正在关注MVC音乐商店教程,但我在第5部分中遇到了Html Helper: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) + "...";
            }
        }
    }
}

如果有人能看到我做错了什么,或者如果需要更多信息,我会很感激指针!感谢。

5 个答案:

答案 0 :(得分:13)

只需将您的静态HtmlHelper课程重命名为HtmlHelperExtensions

答案 1 :(得分:1)

您遇到名称冲突 - 您在示例代码中声明的静态HtmlHelper和您实际想要为其创建扩展方法的类System.Web.Mvc.HtmlHelper。只需将您的班级重命名为HtmlHelpers(就像链接教程中一样)。它现在的方式,你试图在静态类上实现一个扩展方法,这个方法据说不起作用。

答案 2 :(得分:1)

这是因为您正在为扩展类HtmlHelper命名。在truncate中,您尝试将扩展方法添加到静态类中,但不能这样做。

一个简单的解决方案是将您的HtmlHelper重命名为不同的内容。

答案 3 :(得分:1)

this HtmlHelper helper表示Truncate()应该像HtmlHelper上的实例方法一样,但您已将HtmlHelper声明为静态类,可以'有实例。

如果你要做的是在另一个HtmlHelper类上创建一个扩展方法,那么就像其他人建议的那样,重命名这个静态类。如果您只需要静态方法,请删除this HtmlHelper helper参数。你还是不用它。

答案 4 :(得分:0)

删除使用部分

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

并添加

using System.Web.Mvc;