我试图添加Razor助手,但无法让视图识别它。
我有最简单的帮手......
using System.Web.Mvc.Html;
namespace CharityVouchers.Web.Helpers {
public static class Razorhelper {
public static string Jim(this HtmlHelper helper) {
return "Jim";
}
}
}
如果我转到我的_Layout.cshtml,并在顶部添加以下内容......
@using CharityVouchers.Web.Helpers
...然后尝试使用我的助手降低文件的下限,当我在" Html"之后的时间段内,我不会获得智能感知。如果我手动输入方法名称,它会显示为红色,我会收到一条错误消息。
@Html.Jim()
错误讯息是......
CS1061:' System.Web.Mvc.HtmlHelper'不包含' Jim'的定义并没有延伸方法' Jim'接受类型为#System; Web.Mvc.HtmlHelper'的第一个参数。可以找到(您是否缺少using指令或程序集引用?)
我已经尝试了所有我能找到的东西,但似乎没有任何帮助。任何想法,我做错了什么?
编辑忘记提到我尝试将名称空间添加到Web.config中,主要名称和视图中的名称空间,但它没有任何区别。由于我在视图中使用它不应该有任何区别,但它值得一提。
答案 0 :(得分:0)
在Views文件夹的web.config
中,添加你的html助手名称空间<add namespace="CharityVouchers.Web.Helpers" />
。例如。
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<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.Mvc.Html5" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="CharityVouchers.Web.Helpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
这是我使用你的代码的结果 -
您的CharityVouchers.Web.Helpers
命名空间与MVC网站位于同一项目中,还是肯定位于包含的DLL中?
我注意到的另一个不同之处(可能只是你的剪切和粘贴代码),我需要在课程中添加using System.Web.Mvc;
而不是using System.Web.Mvc.Html;
。
答案 1 :(得分:0)
仔细检查Views文件夹中的web.config以确保正确的命名空间可用:
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>