C# Razor与类函数对话?
我正在尝试将社交网络按钮添加到我的站点,并构建了一个社交网络帮助类 我想知道我需要做什么才能获得视图来查看helper类 我通过下面的链接找到了我现在的位置 我正在使用MVC4,并已将此div放置在页脚的布局页面中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
<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.Titlewhatnamespace
你把那个代码放在哪里了?你需要做的就是,假设你把它添加到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