为了账号安全,请及时绑定邮箱和手机立即绑定

找不到Razor HtmlHelper扩展(或其他视图名称空间)

找不到Razor HtmlHelper扩展(或其他视图名称空间)

jeck猫 2019-10-08 14:29:16
Dunno,如果这是在PR或Beta中发生的,但是如果我在上创建了扩展方法HtmlHelper,则在Razor支持的页面中无法识别该方法:namespace SomeNamespace.Extensions {    public static class HtmlExtensions {        public static string Foo(this HtmlHelper html) {            return "Foo";        }    }}我将其添加到的<Namespaces>部分中Web.config:<pages>  <namespaces>    <add namespace="System.Web.Mvc" />    <!-- snip -->    <add namespace="SomeNamespace.Extensions"/>  </namespaces></pages>但是在尝试查看页面时会引发编译错误:@Html.Foo()如果我使用WebForms重新创建页面,则效果很好。这是怎么回事?解决方法如果我将其包含@using SomeNamespace.Extensions在Razor视图中,则可以使用,但我宁愿将其包含在其中Web.config
查看完整描述

4 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

从Beta开始,Razor使用不同的配置节来全局定义名称空间导入。在Views\Web.config文件中,应添加以下内容:


<configSections>

  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />

    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />

  </sectionGroup>

</configSections>


<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" />

      <!-- Your namespace here -->

    </namespaces>

  </pages>

</system.web.webPages.razor>

使用MVC 3升级工具可自动确保您具有正确的配置值。


请注意,您可能需要关闭并重新打开文件,以使编辑器可以获取更改。



查看完整回答
反对 回复 2019-10-08
?
GCT1015

TA贡献1827条经验 获得超4个赞

我在使用Razor的MVC 4应用程序中遇到了相同的错误。为了清理web.config文件,我删除了两个webpages:配置值:


<appSettings>

  <add key="webpages:Version" value="2.0.0.0" />

  <add key="webpages:Enabled" value="false" />

恢复这些配置值后,页面将正确编译,有关.Partial()扩展方法的错误也消失了。


查看完整回答
反对 回复 2019-10-08
?
RISEBY

TA贡献1856条经验 获得超5个赞

我在VS 2015中遇到了这个问题。以下内容为我解决了这个问题:


在应用程序设置中找到“ webpages:Version”,并将其更新为版本3.0.0.0。我的web.config有


<add key="webpages:Version" value="2.0.0.0" />

我将其更新为


<add key="webpages:Version" value="3.0.0.0" />


查看完整回答
反对 回复 2019-10-08
  • 4 回答
  • 0 关注
  • 252 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信