VB.NET中的MVC 5区域无法正常工作

时间:2014-11-19 08:49:30

标签: c# asp.net-mvc vb.net

使用Visual Studio 2013 Professional,我创建了一个新项目。

选择“Visual Basic”,“Web”,“Web应用程序”。我选择MVC。没有认证。创建

然后我添加了一个名为" Test"的区域。一个名为" Test"和一个名为"索引"。

的视图

我点击F5,项目构建并运行并给我HTTP 404

我做了完全相同的事情(字面上是相同的步骤),除了在创建Web应用程序时选择C#而不是Visual Basic。它有效。

是,调用AreaRegistration.RegisterAllAreas()。它是一个默认的新项目,具有上述步骤,但它根本不起作用,而C#版本则是。

为什么这样,我该如何解决?我的客户在VB.NET中需要它,而不是C#

编辑以下是RouteDebugger所说的内容:

Matches Current Request | Url | Defaults | Constraints | DataTokens

False | __browserLink/requestData/{requestId} (null) (null) (null) 

True  | Test/{controller}/{action}/{id} action = Index, id = UrlParameter.Optional (empty) Namespaces = WebApplication2.Areas.Test.*, area = Test, UseNamespaceFallback = False 

False | {resource}.axd/{*pathInfo} (null) (empty) (null) 

True  | {controller}/{action}/{id} controller = Home, action = Index, id = UrlParameter.Optional (empty) (empty) 

True | {*catchall} (null) (null) (null) 

structure

2 个答案:

答案 0 :(得分:0)

它与C#或VB.NET没有任何关系......我猜应用程序中没有其他控制器;如果您有一个名为TestController的控制器并且您使用的是默认路由,那么注册的唯一可用路由是test/test

答案 1 :(得分:0)

感谢此帖:https://stackoverflow.com/a/25417592/3036342

它强调,默认情况下,VB.NET区域控制器不会自动添加命名空间,这是其工作所必需的。将Namespace Areas.Test.Controllers添加到TestController之后就可以了。

感谢微软让这种困难和愚蠢的体验。