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",但似乎有一个扩展方法名称无法动态调度扩展方法。考虑强制转换动态参数或调用扩展方法扩展方法语法。
您应该将链接中的代码放在任何命名空间中:
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>