我有最新版本的VS 2010,.NET 4.0和MVC 3,並且在使用vb時,在asp.net mvc 3中有一個問題。淨。無法在asp.net mvc 3中使用vb.net加載視圖
我做到以下幾點:
- 創建一個新的Visual Basic asp.net MVC 3項目。選擇Razor作爲「查看引擎」並調用項目「TestApp」。
- 創建一個名爲「Test」的新區域,它將位於文件夾:/ Areas/Test中。
- 添加堪稱/地區「PageController.vb」一個新的空控制器/測試/控制器/頁‘」。
- 在/區/測試/瀏覽/被叫添加一個新文件夾’。
- 添加新在/ Areas/Test/Views/Page
- 中運行該項目
- 在瀏覽器中手動輸入url「http:// localhost:xyz/Test/Page」,其中xyz是由VS生成的自動添加的端口號
在步驟7,我得到消息「The resource ca找不到「。
如果我使用c#做完全相同的事情,那麼我會進入正確的頁面,它會按預期顯示單詞「Index」。
這是一個錯誤,還是我錯過了什麼?我一直在掃描網絡幾個小時試圖解決這個問題,但我現在得到了。
這是自動生成的文件TestAreaRegistration.vb命名空間 TestApp.Areas.Test 公共類TestAreaRegistration 繼承AreaRegistration
Public Overrides ReadOnly Property AreaName() As String
Get
Return "Test"
End Get
End Property
Public Overrides Sub RegisterArea(ByVal context As System.Web.Mvc.AreaRegistrationContext)
context.MapRoute(_
"Test_default", _
"Test/{controller}/{action}/{id}", _
New With {.action = "Index", .id = UrlParameter.Optional} _
)
End Sub
End Class
末命名空間
這是自動生成的文件Global.ascx : '注意:有關啓用IIS6或IIS7經典模式的說明,請登錄http://go.microsoft.com/?LinkId=9394802
公共類MvcApplication 繼承System.Web.HttpApplication
Shared Sub RegisterGlobalFilters(ByVal filters As GlobalFilterCollection)
filters.Add(New HandleErrorAttribute())
End Sub
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
' MapRoute takes the following parameters, in order:
' (1) Route name
' (2) URL with parameters
' (3) Parameter defaults
routes.MapRoute(_
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)
End Sub
Sub Application_Start()
AreaRegistration.RegisterAllAreas()
RegisterGlobalFilters(GlobalFilters.Filters)
RegisterRoutes(RouteTable.Routes)
End Sub
末級
這些是你會得到什麼,如果你repete步驟1-7,並使用C#一樣的(唯一的區別是,你會獲取等於vb.net代碼的c#代碼)。
我重複:如果我在C#中執行步驟1-7,它可以工作,但它在vb.net中不起作用!哪裏不對?
我使用了創建空控制器時得到的默認操作方法,所以不是這樣。謝謝讓我走上正軌!我將兩個示例項目並排放置,以查看c#和vb.net項目之間是否存在任何差異,現在我發現在「PageController」與「PageController」相比,「PageController.vb」有一些「名稱空間」差異的.cs」。看來mvc 3的vb.net版本忘了添加正確的命名空間定義,當我糾正這一切時,一切開始奏效! – Thomas 2011-04-30 19:22:50
耶!幾小時的困惑,而我所要做的就是修復每個自動生成的控制器中的命名空間。謝謝!! – user158017 2011-08-03 18:23:39
這個答案讓我在正確的軌道上,但是,在我看來,第四個參數的語法是有點關閉..應該更像這樣:namespaces:= {「MyDefaultNamespace.Areas.Test.Controllers」}或至少這是什麼爲我工作。雖然我的區域控制器不在這個命名空間中,但我特意將它們作爲範圍,並添加了這個參數,並且它在我的VB.NET MVC 4 Web應用程序中一直工作。 – bkwdesign 2014-01-08 17:22:12