C# Razor与类函数对话?

C# Razor与类函数对话?,c#,html,asp.net-mvc-3,razor,C#,Html,Asp.net Mvc 3,Razor,我正在尝试将社交网络按钮添加到我的站点,并构建了一个社交网络帮助类 我想知道我需要做什么才能获得视图来查看helper类 我通过下面的链接找到了我现在的位置 我正在使用MVC4,并已将此div放置在页脚的布局页面中 <div> @Html.SocialLinkButtons(Model.Title, Request.Url.ToString()) </div> @Html.SocialLinkButtons(Model.Title、Request.Url.To

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

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

我通过下面的链接找到了我现在的位置

我正在使用MVC4,并已将此div放置在页脚的布局页面中

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

@Html.SocialLinkButtons(Model.Title、Request.Url.ToString())
SocialLinkButtons文本以红色下划线,并显示以下错误消息

“System.Web.Mvc.HtmlHelper”不包含的定义 “SocialLinkButtons”和无扩展方法“SocialLinkButtons” 接受类型为的第一个参数 可以找到“System.Web.Mvc.HtmlHelper”(您是否缺少 使用指令或组件引用?)

是否有一些东西我必须添加到我的视图中,以允许@html调用我的社交链接按钮? 或者我需要在我的类中添加一些东西来允许这样做

我已经试着把我的类放在控制文件夹和模型文件夹中,只是在整个项目中放在普通文件夹中。这个助手类应该保存在哪里

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

编辑:


在SocialLinkButtons下面的答案后面,文本不再加下划线,但当我运行代码时,我得到以下错误

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


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

可能您的扩展方法
社交链接按钮在视图中不可见。
您应该在视图中添加
@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>

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

namespace Helpers {
  public static class SocialNetworkingHelper {
    ...
  }
}
并在视图中添加using指令:

@using Helpers

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

namespace Helpers {
  public static class SocialNetworkingHelper {
    ...
  }
}
并在视图中添加using指令:

@using Helpers


你把那个代码放在什么
名称空间中了?您所需要做的就是,假设您将其添加到
Helpers
文件夹中,在视图的第一行或写入中:
@usingmynamespace.Helpers
@balexandre这里是我的命名空间:namespace OBASA.Controllers{public static class socialnetworkinghelp{你在你的控制器名称空间中放置了一个助手?那不对!在你的项目中创建一个文件夹并命名为Helpers,然后创建一个名为
ExtensionMethods.cs
的文件并将该代码添加到里面,只有在添加到你的视图之后,在第一行:
@using OBASA.Helpers.ExtensionMethods
-编译并运行以测试你必须强制转换将参数设置为其适用类型。可能是Model.Title,try(字符串)Model.Titlewhat
namespace
你把那个代码放在哪里了?你需要做的就是,假设你把它添加到
Helpers
文件夹中,在视图的第一行写:
@using MyNamespace.Helpers
@balexandre这里是我的命名空间:namespace OBASA.Controllers{public static class socialnetworkinghelp{你在你的控制器名称空间中放置了一个助手?那不对!在你的项目中创建一个文件夹并命名为Helpers,然后创建一个名为
ExtensionMethods.cs
的文件并将该代码添加到里面,只有在添加到你的视图之后,在第一行:
@using OBASA.Helpers.ExtensionMethods
-编译并运行以测试你必须强制转换将参数设置为其适用类型。可能是Model.Title,try(字符串)Model.TitleSo我在对socialNetworking的调用中重命名了名称空间,然后添加了名称空间,就像您所显示的那样,但没有效果。还有一点您应该检查。检查您是否在
公共静态MvcHtmlString SocialLinkButtons中引用了正确的
HtmlHelper
(此HtmlHelper HtmlHelper,字符串标题,字符串url)
。您应该使用System.Web.Mvc版本,而不是System.Web.WebPages。因此,我在对socialNetworking的调用中重命名了名称空间,然后添加了名称空间,就像您显示的那样,但没有任何效果。还有一点您应该检查。检查您是否在
公共静态MVCHTMLSING SocialLinkButton中引用了正确的
HtmlHelper
ns(此HtmlHelper HtmlHelper、字符串标题、字符串url)
。您应该使用System.Web.Mvc版本,而不是System.Web.WebPages。我将我的名称空间重命名为SoicalNetworking,因为它以前是OBASA.Controller,然后添加了@using SocialNetworking。带下划线的红色文本消失了,但仍有一个错误,请参见编辑。您应该在将使用命名空间的视图中添加@using,而不是forget to rebuild solution.BTW,如果您只需要将社交小部件添加到您的页面,您可以通过
AddThis.com
或其他类似服务使用自定义小部件,而无需向project添加任何类。我将我的名称空间重命名为SoicalNetworking,因为它以前是OBASA.Controllers,然后将@using SocialNetworking添加了带下划线的红色text已消失,但仍有一个错误,请参见编辑。您应该在将使用命名空间的视图中添加@using,如果需要,请不要忘记重新生成solution.BTW