剃刀与班级功能交谈?

时间:2013-07-25 10:40:50

标签: c# html asp.net-mvc-3 razor

我正在尝试将社交网络按钮添加到我的网站,并构建了一个socialNetworkingHelper类。

我想知道我需要做些什么才能让视图看到辅助类。

我按照以下链接获取了我现在的位置。

http://www.advancesharp.com/Blog/1033/add-facebook-twitter-and-google-plus-in-c-mvc-application

我正在使用MVC 4并将此div放在我的页脚布局页面中。

<div>
   @Html.SocialLinkButtons(Model.Title, Request.Url.ToString())
</div>

SocialLinkBut​​tons文本以红色下划线,并显示以下错误消息。

  

'System.Web.Mvc.HtmlHelper'不包含的定义   'SocialLinkBut​​tons'并没有扩展方法'SocialLinkBut​​tons'   接受第一个类型的参数   可以找到'System.Web.Mvc.HtmlHelper'(你错过了吗?   using指令或程序集引用?)

我必须在视图中添加一些东西才能让@html调用我的socialLinkBut​​tons吗? 或者有什么我需要添加到我的班级来允许这个吗?

我尝试将我的课程放在contoller文件夹和models文件夹中,并且只是在整个项目中。这个辅助班应该留在哪里?

要查看课程,请点击上面的链接。

编辑:


按照下面的答案,SocialLinkBut​​tons文本不再加下划线,但是当我运行我的代码时,我收到以下错误。

  

'System.Web.Mvc.HtmlHelper'没有名为的适用方法   'SocialLinkBut​​tons'但似乎有一个扩展方法   名称。无法动态分派扩展方法。考虑   强制转换动态参数或调用扩展方法   扩展方法语法。

2 个答案:

答案 0 :(得分:3)

您应该将链接中的代码放在任何名称空间中:

namespace Helpers {
  public static class SocialNetworkingHelper {
    ...
  }
}

并在视图中添加using指令:

@using Helpers

答案 1 :(得分:1)

您可能在视图中看不到扩展方法SocialLinkButtons。 您应该在视图中添加@using MyNamespace指令,其中MyNamespace是扩展方法SocialLinkButtons的实际命名空间,或者您可以通过web.config通过将此命名空间添加到

<system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Collections" />
            <add namespace="MyNamespace" />
        </namespaces>
    </pages>
</system.web.webPages.razor>