这是我的
Html帮助器的样子:
namespace WebApp.WebUI { public static class HtmlExtensions { public static MvcHtmlString GenerateCaptcha(this HtmlHelper helper,string theme) { string publicKey = ConfigurationManager.AppSettings["CaptchaKey_Public"]; string privateKey = ConfigurationManager.AppSettings["CaptchaKey_Private"]; var captchaControl = new Recaptcha.RecaptchaControl { ID = "recaptcha",Theme = theme,PublicKey = publicKey,PrivateKey = privateKey }; var htmlWriter = new HtmlTextWriter(new StringWriter()); captchaControl.RenderControl(htmlWriter); return new MvcHtmlString(htmlWriter.InnerWriter.ToString()); } } }
我在这个视图中尝试使用它:
@{ ViewBag.Title = "Register"; } @model WebApp.WebUI.viewmodel.RegisterModel @using (Html.BeginForm("Register","Auth",FormMethod.Post,new { Id = "ERForm" })) { @Html.GenerateCaptcha("clean") }
它给我这个错误:
CS1061:’System.Web.Mvc.HtmlHelper< WebApp.WebUI.viewmodel.RegisterModel>‘不包含’GenerateCaptcha’的定义,也没有扩展方法’GenerateCaptcha’接受’System.Web.Mvc.HtmlHelper< WebApp.WebUI.viewmodel.RegisterModel>‘类型的第一个参数.可以找到(您是否缺少一个using指令或程序集引用?)
我究竟做错了什么.我的命名空间是正确的.它不会出现在@Html的智能感知中
解决方法
你可以添加:
@using WebApp.WebUI
在您的剃须刀视图的顶部.
而且如果你想在许多不同的视图中重复使用这个帮助器,以避免每次添加到< namespaces> 〜/ Views / web.config文件的部分:
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,Version=3.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.Routing" /> <add namespace="WebApp.WebUI" /> </namespaces> </pages> </system.web.webPages.razor>
这样做后,请确保您重新编译并重新打开“智能感知”的“剃须刀”视图,以便有时间接听.