创建扩展方法会导致错误

时间:2013-03-04 11:42:59

标签: c# asp.net-mvc asp.net-mvc-4

您好我正在尝试为asp.net MVC项目创建一个HTML帮助方法,但我必须做错了,因为当我尝试调用该方法时,我得到了这个错误:

  

错误1'System.Web.Mvc.HtmlHelper'   不包含'LabelSomething'的定义和最佳定义   扩展方法重载   “TestProject.Modules.Pager.LabelSomething(System.Web.WebPages.Html.HtmlHelper,   string,string)'有一些无效   参数d:\ Training \ Practis.Internship.Workspace \ Alex.Nistor \ ADO.NET \ TestProject \ Views \ Home \ Index.cshtml 35 6 ADO.NET

     

错误2实例参数:无法转换   'System.Web.Mvc.HtmlHelper'来   'System.Web.WebPages.Html.HtmlHelper'd:\ Training \ Practis.Internship.Workspace \ Alex.Nistor \ ADO.NET \ TestProject \ Views \ Home \ Index.cshtml 35 6 ADO.NET

这是我的代码:

public static class Pager
{
    public static string LabelSomething(this HtmlHelper helper, string target , string text){
        return string.Format("<label for='{0}'>{1}</label>", target, text);
    }
}

这就是我试图称之为:

 @Html.LabelSomething("fsaf" , "ddada")

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您没有从MVC指定HtmlHelper,而是指向WebPages.Html将您的扩展方法修改为:

public static class Pager
{
    public static string LabelSomething(this System.Web.Mvc.HtmlHelper helper, string target , string text){
        return string.Format("<label for='{0}'>{1}</label>", target, text);
    }
}

答案 1 :(得分:1)

你可以将你的助手放在App_Code中,但是有一些限制会影响某些MVC场景(例如:无法访问标准的MVC Html。助手)