在C#中创建扩展方法

时间:2010-12-14 12:08:19

标签: c# extension-methods html-helper

我正在尝试在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 个答案:

答案 0 :(得分:4)

根据MSDN

  

HtmlHelper类的扩展是   位于System.Web.Mvc.Html中   命名空间。这些扩展添加了帮助   创建表单的方法,渲染   HTML控件,渲染部分   视图,输入验证等。

尝试包含System.Web.Mvc.Html命名空间。 LinkExtensions.RouteLink给出了它的名称空间(它表示它位于System.Web.Mvc.dll中,只是在不同的名称空间中)。

答案 1 :(得分:3)

您需要为System.Web.Mvc引用HtmlHelper,但扩展名位于System.Web.Mvc.Html

答案 2 :(得分:0)

您的命名空间可能有误。试试using System.Web.Mvc.Html;

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

答案 3 :(得分:0)

我不确定添加命名空间请参阅resukt System.Web.Mvc.Html