完全有可能,而且你的做法是正确的。我推测您的路线设置不正确。您必须在 VB 项目的路由中指定命名空间。
在您的 AreaRegistration 代码中:
Public Overrides Sub RegisterArea(ByVal context As AreaRegistrationContext)
context.MapRoute(
"Users_default",
"Users/{controller}/{action}/{id}",
New With {.action = "Index", .id = UrlParameter.Optional},
New String() {"MyCompany.MyAmazingCSProject.Areas.Users.Controllers",
Me.GetType().Namespace}
)
End Sub
请记住,VB 命名空间增加了根命名空间的复杂性,其工作方式与 C# 项目的默认命名空间不同,因此如果您同时使用两者,则需要保持一致。
即
具有根命名空间的 VB 项目MyCompany.MyAmazingVBProject
在代码中具有此命名空间:
Namespace Areas.Users.Controllers
映射到MyCompany.MyAmazingVBProject.Areas.Users.Controllers
,而 C# 中的等效命名空间将具有以下代码:
namespace MyCompany.MyAmazingCSProject.Areas.Users.Controllers { ... }