【发布时间】:2011-08-16 04:03:00
【问题描述】:
我有最新版本的 VS 2010、.NET 4.0 和 MVC 3,但在使用 vb.net 时,我在使用 asp.net mvc 3 中的区域时遇到问题。
我执行以下操作:
- 创建一个新的visual basic asp.net mvc 3 项目。选择 Razor 作为“View Engin”并将项目命名为“TestApp”。
- 创建一个名为“Test”的新区域,它将在文件夹中:/Areas/Test。
- 在 /Areas/Test/Controllers/ 中添加一个名为“PageController.vb”的新空控制器。
- 在 /Areas/Test/Views/ 中添加一个名为“Page”的新文件夹。
- 在 /Areas/Test/Views/Page 中添加一个名为“Index.vbhtml”的新空视图。
- 运行项目。
- 在浏览器中手动输入url“http://localhost:xyz/Test/Page”,其中xyz是VS自动生成的端口号。
在第 7 步,我收到消息“找不到资源”。
如果我使用 c# 做完全相同的事情,那么我将进入正确的页面,它会按预期显示单词“索引”。
这是一个错误,还是我遗漏了什么?我已经在网上扫描了几个小时试图解决这个问题,但我没有意识到。
这是自动创建的 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
结束类
如果您重复步骤 1-7 并使用 c#,这些与您获得的相同(唯一的区别是您将获得与上述 vb.net 代码相同的 c# 代码)。
我重复一遍:如果我在 C# 中执行步骤 1-7,它可以工作,但在 vb.net 中将无法工作!怎么了?
【问题讨论】:
标签: c# vb.net asp.net-mvc-3