【问题标题】:Missing assembly or reference for htmlhelpers缺少 htmlhelpers 的程序集或参考
【发布时间】:2015-09-25 07:27:06
【问题描述】:

我遇到了一个问题,VS (2015) 抱怨我的 .cshtml 视图中的一些事情。

“当前上下文中不存在名称‘模型’”

@model Project.MyModel

“HtmlHelper”不包含“TextBoxFor”的定义,并且找不到接受“HtmlHelper”类型的第一个参数的扩展方法“TextBoxFor”(您是否缺少 using 指令或程序集引用?)

 @Html.TextBoxFor(x => Model.Property)

我不知道为什么会这样。

我的观点/Web.config

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.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.Optimization"/>
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>
</system.web.webPages.razor>

我的网站配置

pages>
  <namespaces>
    <add namespace="System.Web.Helpers"/>
    <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"/>
    <add namespace="System.Web.WebPages"/>
  </namespaces>
</pages>

谁能看到我在这里遗漏了什么?

编辑:它在 VS 2013 中运行良好..

【问题讨论】:

  • 您是否尝试关闭并重新打开此文件?
  • 对照 web.config 文件中的所有版本号检查您的所有 &lt;bindingRedirect .. newVersion=".." /&gt; 是否存在版本不匹配
  • 你的 .Net 目标框架是什么?
  • 4.5.请看我的编辑。它在 VS 2013 中运行良好
  • &lt;appSettings&gt; &lt;add key="webpages:Version" value="3.0.0.0" /&gt; 尝试在您的 web.config 中将上述值 3.0.0.0 更改为 2.0.0.0。构建解决方案并打开视图。

标签: c# asp.net-mvc


【解决方案1】:

我按照本指南进行操作,现在可以使用了。看来我错过了一些版本升级...

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

查看 packages.config 并检查您拥有的 Microsoft.Aso.Net.Mvc 版本。然后在 Views/Web.config 中,我将版本号更改为这些地方的版本号(在我的情况下,我添加了 Version=5.2.3.0):

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</system.web.webPages.razor>

<system.web>
<pages
    validateRequest="false"
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <controls>
    <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
  </controls>
</pages>
</system.web>

我也在此处将版本号从 Version=2.0.0.0 -> Version=3.0.0.0 升级(Still Views/Web.config):

<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>

【讨论】:

  • 如果可以在您的答案中添加内容而不是链接它,请。该文章可能会变得不可用,您的答案将失去任何价值。
【解决方案2】:

在名为它的文件夹中的静态类中构建您的代码,例如帮助程序 enter image description here

那么 像这样在 web.config 中添加这个文件夹

添加命名空间="TheCompeleteApp.Helper"

如果它不起作用,请在您使用此扩展方法的视图中对其进行硬编码,如下所示 @使用 FinalProject_0._1.Helper

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2019-01-23
    • 2023-04-01
    相关资源
    最近更新 更多