2009-06-18 58 views
1

我找不出在下面的代碼中缺少的內容。我有一個應該添加一個(假)輔助擴展的方法:無法在VB MVC應用程序中創建HtmlHelper方法

Imports System.Runtime.CompilerServices 

Namespace HtmlHelpers 

    Public Module HelpExtensions 

     <Extension()> _ 
     Public Function HelpMe(ByVal HtmlHelper As HtmlHelper) As String 
      Return "<a>HELP</a>" 
     End Function 

    End Module 

End Namespace 

我的看法是這樣的:

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<%@ Import Namespace="HtmlHelpers" %> 
<asp:Content ID="indexContent" ContentPlaceHolderID="body" runat="server"> 
    <%=Html.HelpMe()%> 
</asp:Content> 

但是這給了我以下錯誤:

'HelpMe' is not a member of 'System.Web.Mvc.HtmlHelper'. 

我在做什麼錯?

+0

這應該只是在VS環境中的一個錯誤,但它應該運行良好,我們一直這樣做。 – 2015-08-22 12:44:01

回答

1

不知道爲什麼導入namespace指令沒有做的伎倆,但我加

<add namespace="MyProject.HtmlHelpers"/> 

到web.config中的<namespaces>部分,它的工作現在。也許如果我已經完成

<%@ Import Namespace="MyProject.HtmlHelpers" %> 

它會工作以及?

0

在嘗試使用擴展方法之前,您是否嘗試過重建解決方案?我必須用VB.NET來做到這一點,以便編譯器能夠找到我的擴展方法。

0

我想我只是找到了解決方案。

您的幫手的模塊需要位於App_Code目錄中。

-2

問題可能是您已經安裝了MVC2和MVC3。 如果是這樣,當您使用VB.NET Visual Studio編寫HTMLHelper自定義時拋出廣告錯誤「YourClass」不是「System.Web.Mvc.HtmlHelper」的成員。

但是,如果你運行該頁面,它工作正常。

這是解決方案: http://forums.asp.net/t/1694828.aspx/1

解決方案1)升級項目MVC3 解決方案2)卸載MVC3 解決方案3)更改.NET框架3.5,而不是4.0(禁用MVC3) 解決方案4)寫C#代碼,你將不會有任何問題

馬爾科

0

正如gfrizzle說,命名空間參考Views文件夾中的web.config允許頁面正常顯示。但是,我必須重新啓動客戶端才能使Intellisense正常工作。我還必須明確地添加Import語句,用於已經全局導入到帶有擴展模塊的文件的名稱空間。

例如,延長System.Web.Mvc.HtmlHelper,當我不得不添加行

Imports System.Web.Mvc

爲了使頁面顯示沒有錯誤,儘管應用程序正確編譯和命名空間所檢查的事實項目參考選項卡。

相關問題