vb.net - 证明我的错误: VB. NET HtmlHelper扩展方法无法在VS 2012的MVC 4中使用

标签 vb.net asp.net-mvc-4 visual-studio-2012 extension-methods html-helper

无论尝试多少次,都无法使用HTML Helper扩展方法。如果有人想亲自尝试,这是我创建的测试步骤:

  • 使用Visual Studio 2012,我使用“Internet应用程序”项目模板创建了一个新的“Visual Basic ASP.NET MVC 4 Internet Web应用程序”。
  • 我创建一个文件夹"~/Views/Helpers"
  • 我创建一个文件"DisplayForPropertyHelper.vb"并添加以下代码:

    Namespace TestProject.Extensions
        Public Module HtmlHelperExtensions
            <Extension()>
            Public Function DisplayForProperty(helper As HtmlHelper) As MvcHtmlString
                Return MvcHtmlString.Create("TEST")
            End Function
        End Module
    End Namespace
    
  • 我打开"~/Views/Web.config"并更改以下内容(我添加了扩展 namespace ):

    <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" />
            <add namespace="TestProject.Extensions"/>
          </namespaces>
        </pages>
    </system.web.webPages.razor>
    
  • 编译项目
  • 选择ANY Razor View 文件,然后键入@Html.Display-您将看到扩展方法未显示。
  • 添加到 Razor View 文件@Imports TestProject.Extensions,然后保存并关闭文件。
  • 重新打开文件,然后键入@Html.Display-您将看到扩展方法未显示。
  • 您甚至可以尝试关闭VS2012并重新打开项目。不会有所作为。

  • 我已经为此战斗了几周了。我在这里和其他地方找到的所有答案都无济于事。必须有人回答。

    最佳答案

    确保使用应用程序名称为 namespace 添加前缀。因此,例如,如果您创建的应用程序在MvcApplication1中称为~/Views/web.config,则应输入:

    <add namespace="MvcApplication1.TestProject.Extensions"/>
    

    而不仅仅是:
    <add namespace="TestProject.Extensions"/>
    

    是的,我想这是VB.NET的问题之一:-)哦,别忘了对~/Views/web.config文件进行更改后,关闭并打开Razor View ,否则您的更改将不会立即被考虑(如果您运行该应用程序,它将可以正常运行)。

    关于vb.net - 证明我的错误: VB. NET HtmlHelper扩展方法无法在VS 2012的MVC 4中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723010/

    相关文章:

    c# - MVC4 将 lambda 从 Controller 传递到存储库

    C# asp.net 日历控件从顶部移动显示

    mysql - 如何处理并发(多个用户编辑相同数据)- VB.NET 特色 MySQL

    vb.net - 从 vb.net 打印时 Excel 中的换行符

    wpf - 使用 String 键绑定(bind)到索引属性

    visual-studio-2012 - .NET Framework 4.6.1 Targeting Pack 和 .NET Framework 4.6.1 Runtime 之间有什么区别?

    c# - 设计器中的 ContextMenuStrip 事件

    vb.net - 如何使 32 位 VB6 应用程序适应 64 位 Office?

    c# - 通过用户输入将项目添加到列表

    asp.net - 如何在 Web 窗体 .NET Web 应用程序下配置嵌套 MVC 应用程序