【问题标题】:'System.Web.Mvc.HtmlHelper' does not contain a definition for 'RenderPartial' - ASP.Net MVC“System.Web.Mvc.HtmlHelper”不包含“RenderPartial”的定义 - ASP.Net MVC
【发布时间】:2009-11-22 21:43:58
【问题描述】:

我一直试图在一台机器上运行 ASP.Net MVC 1.0,但无法通过这个。我创建了一个新的 MVC 项目 (C#)。它创建了所有的文件夹、视图、控制器、模型等。一切都很好。然后,当我按 F5 时,我得到以下信息:

d:\VSCode2008\MVC\MvcApplication1\Views\Shared\Site.Master(19):错误 CS0117:“System.Web.Mvc.HtmlHelper”不包含“RenderPartial”的定义

这发生在以下行:

httpHandler.ProcessRequest(HttpContext.Current);在 Default.aspx.cs

它似乎是在尝试执行 RenderPartial() 来呈现部分登录。

我安装了 3.51 版的 .Net 框架。我安装了 MVC 1.0 版,并且该程序集显然具有 RenderPartial() 作为 HtmlHelper 的扩展方法。

有人见过类似的吗?我发现了一些关于 beta 和 RC 的类似问题的帖子,但建议的修复程序并没有磨损。

我喜欢 MVC 的理论,但它不让我玩!

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    这里只是想排除明显的问题,但你能确保在 web.config 的命名空间部分中有这个吗?

    <add namespace="System.Web.Mvc.Html"/>
    

    【讨论】:

    • 是的 - 谢谢 - 在网络配置中得到了(有 2 个 web.config,一个在项目级别,一个在视图中)
    • 我需要添加一个 using 到这个命名空间,它修复了我的错误。 System.Web.Mvc.Html 必须包含对 HtmlHelper 类的扩展
    • 更具体地说,这可以在 system.web/pages/namespaces 下找到
    • 就是这样!我没有意识到我的 web.config 被修改了。
    【解决方案2】:

    由于您在代码隐藏(即 Default.aspx.cs)中引用它,因此您需要在文件顶部包含命名空间。

    使用 System.Web.Mvc.Html;

    是包含 RenderPartial 扩展方法的命名空间。

    【讨论】:

      【解决方案3】:

      您可能认为这很愚蠢,但我也遇到了同样的问题。我有一个工作的 MVC 应用程序,运行 1.0.0.0,突然间它停止工作,给我同样的 RenderPartial 不在定义中。事实证明,当我疯狂地清理我的 web.config 时,我删除了这一部分。当我重新添加它时,一切都恢复了。我确信这与运行时类扩展的加载方式有关。

      无论如何,将它重新添加到我的 web.config 在我的机器上工作。 ;)

      <system.codedom>
          <compilers>
              <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
                           type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                  <providerOption name="CompilerVersion" value="v3.5"/>
                  <providerOption name="WarnAsError" value="false"/>
              </compiler>
      
              <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4"
                           type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                  <providerOption name="CompilerVersion" value="v3.5"/>
                  <providerOption name="OptionInfer" value="true"/>
                  <providerOption name="WarnAsError" value="false"/>
              </compiler>
          </compilers>
      </system.codedom>
      

      【讨论】:

      • 啊哈!我只是做了同样的事情!哦!
      【解决方案4】:

      根据您的错误消息,您引用的是System.Web.Mvc.HtmlHelper。我正在查看 Reflector 中的 System.Web.Mvc dll,它告诉我 RenderPartial 位于命名空间 System.Web.Mvc.Html,而不是 System.Web.Mvc.HtmlHelper

      【讨论】:

      • 谢谢罗伯特,我看了一下,我看到了同样的东西。我忘了提到,当我运行该项目(或任何 asp.net Web 项目)时,它会抱怨 web.config - System.Codedom 中有一个无法识别的部分。我在想也许我的 VS2008 需要更新 - 虽然我认为我安装了 sp1,但它看起来并不存在。
      • 试过 sp1 - 没有修复。重新安装 VS2008 - 无修复。我认为重新映像可能是这里最快的选择...
      • 谢谢,罗伯特。真的很有帮助
      【解决方案5】:

      另一个可能的问题(取决于您的错误字符串)是扩展方法存在,但编译器无法将您的参数与已知的方法参数匹配。我使用 T4MVC (noob) 遇到了这个问题,忘记在我调用的操作名称之前添加 ActionNames。

      【讨论】:

        【解决方案6】:

        如果您迁移到 Visual Studio 2017 或 2019 并且您的项目是 mvc4,请返回到 Visual Studio 安装程序并检查“ASP.net 和 Web 开发”下的 mvc4 选项。

        解决了我的问题。

        【讨论】:

          猜你喜欢
          • 2012-09-23
          • 1970-01-01
          • 1970-01-01
          • 2017-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          相关资源
          最近更新 更多