MVC3:需要帮助的HTML辅助
问题描述:
我基本上沿袭了这篇文章:http://develoq.net/2011/how-to-create-custom-html-helpers-for-asp-net-mvc-3-and-razor-view-engine/MVC3:需要帮助的HTML辅助
我HtmlHelper类位于我的MVC项目的根目录:
using System.Web.Mvc;
namespace MvcHtmlHelpers
{
public static class HtmlHelperExtensions
{
public static MvcHtmlString Hello(this HtmlHelper helper)
{
return new MvcHtmlString("Hello!");
}
}
}
如果我引用它的看法: @using MvcHtmlHelpers;
我得到智能感知和查看代码验证罚款(没有红色下划线)。
如果我没有在视图中引用它,而是在2个web.config文件中的一个或两个中引用它,我没有获得智能感知,现在@Html.Hello()
是红色下划线。
现在最好的部分是,当我运行时,即使我没有在任何地方引用它,它也会呈现完美的效果。理想情况下,我想在web.config中引用它,并在视图中获取intellisense,而不是在该视图中引用它。谢谢!
更新:我想东西得到缓存的地方。它在任何地方都没有被引用时不渲染。对不起。我仍然想在视图中获得智能感知和验证。谢谢。
答
如果您正在使用Razor视图引擎,你需要引用它~/Views/web.config
而不是在~/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="MvcHtmlHelpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
然后重新编译,关闭并重新打开Razor视图,如果它是你的幸运日,你甚至可能得到智能感知。如果没有,你可能会诅咒微软。
这就是我正在做的,是的。 – Dimskiy 2011-04-08 16:49:12
@Dimskiy,如果将正确的名称空间添加到'〜/ Views/web.config',那么在运行应用程序时,您的应用程序至少可以工作。就Intellisense而言,正如我在答复中所说的,这取决于是否是你的幸运日。通常它的作品,但... – 2011-04-08 16:51:00
哈!所以VS的关闭和重开就做到了!我正要开始敲击键盘上的头部。非常感谢!我想毕竟,这是我的幸运日;) – Dimskiy 2011-04-08 16:53:10