Razor与类函数对话

本文关键字:对话 类函数 Razor | 更新日期: 2023-09-27 18:24:57

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

我想知道我需要做些什么才能获得视图来查看helper类。

我按照下面的链接找到了我现在的位置。

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>

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

"System.Web.Mvc.HtmlHelper"不包含的定义"SocialLinkButtons"且没有扩展方法"SocialLinkButtons接受类型的第一个参数找不到"System.Web.Mvc.HtmlHelper"(你失踪了吗using指令还是程序集引用?)

有没有什么东西我必须添加到我的视图中才能让@html调用我的socialLinkButtons?或者我需要在课堂上添加一些东西来允许这样做吗?

我试着把我的类放在contoller文件夹和models文件夹中,并在整个项目中简单地显示出来。这个助手类应该放在哪里?

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

编辑:


根据下面的答案,SocialLinkButtons文本不再带下划线,但当我运行代码时,我会出现以下错误。

"System.Web.Mvc.HtmlHelper"没有名为的适用方法"SocialLinkButtons",但似乎有一个扩展方法名称无法动态调度扩展方法。考虑强制转换动态参数或调用扩展方法扩展方法语法。

Razor与类函数对话

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

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

并在您的视图中添加使用指令:

@using Helpers

可能您的扩展方法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>