扩展方法没有显示

时间:2009-06-14 04:06:19

标签: extension-methods

我正在为MVC Web应用程序中的HtmlHelper类创建扩展方法。什么都没有显示,甚至没有显示默认的InputExtensions。

public static class HtmlHelpers
{
    public static void RegisterScriptInclude(this HtmlHelper htmlhelper, string script)
    {
        if (!RegisteredScriptIncludes.ContainsValue(script))
        {
            RegisteredScriptIncludes.Add(RegisteredScriptIncludes.Count, script);
        }
    }

    public static string RenderScripts(this HtmlHelper htmlhelper)
    {
        var scripts = new StringBuilder();
        foreach (string script in RegisteredScriptIncludes.Values)
        {
            scripts.AppendLine("<script src='" + script + "' type='text/javascript'></script>");
        }
        return scripts.ToString();

    }

    private static SortedList<int, string> RegisteredScriptIncludes
    {
        get
        {
            SortedList<int, string> value = (SortedList<int, string>)HttpContext.Current.Items["RegisteredScriptIncludes"];
            if (value == null)
            {
                value = new SortedList<int, string>();
                HttpContext.Current.Items["RegisteredScriptIncludes"] = value;
            }
            return value;
        }
    }

}

扩展方法也未显示在代码中。

他们在哪里?

2 个答案:

答案 0 :(得分:9)

您是否忘记了using声明?具体而言,您需要“using path.to.my.namespace;”来获取扩展方法。

答案 1 :(得分:3)

另一个要检查的显而易见的事情是,如果有人发现这篇文章,就会忘记扩展方法的第一个参数中的“this”关键字。如果你忘记了,那么编译器可以帮助你做的事情不多!