Asp.net mvc 你能把一个MVC区域分成两个项目吗?
我有一个用VB.Net编写的Asp.NETMVC3网站。我们想迁移到C#,计划是用C#编写所有新代码,并在修改时重写旧代码 我在解决方案中创建了一个新的C#MVC3项目。在这个项目中,我使用RazorGenerator来帮助将视图编译成最终的程序集。我引用了VB中的C#项目。VB项目作为主站点运行 这套装置90%运行良好。但是,如果VB项目中已经存在一个区域,我似乎无法在C#项目中扩展它。似乎整个区域必须存在于一个项目或另一个项目中Asp.net mvc 你能把一个MVC区域分成两个项目吗?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-areas,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Areas,我有一个用VB.Net编写的Asp.NETMVC3网站。我们想迁移到C#,计划是用C#编写所有新代码,并在修改时重写旧代码 我在解决方案中创建了一个新的C#MVC3项目。在这个项目中,我使用RazorGenerator来帮助将视图编译成最终的程序集。我引用了VB中的C#项目。VB项目作为主站点运行 这套装置90%运行良好。但是,如果VB项目中已经存在一个区域,我似乎无法在C#项目中扩展它。似乎整个区域必须存在于一个项目或另一个项目中 有人知道是否可以从两个项目中为一个区域提供服务吗?我必须通过在
有人知道是否可以从两个项目中为一个区域提供服务吗?我必须通过在VB.Net项目的区域注册中创建一个路由来解决这个问题
C#项目中的区域注册文件需要删除,而VB.Net项目中的路由使用的URL模式略有不同。创建新路由时,需要设置C#控制器所在的名称空间。新路由也需要在该区域的默认路由之前声明。这是完全可能的,并且您所做的是正确的。我猜你的路线设置不正确。您必须在VB项目的路由中指定名称空间 在您的注册代码中:
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#项目的默认名称空间不同,因此如果同时使用这两个名称空间,则需要保持一致
即
根命名空间为MyCompany.MyAmazingVBProject的VB项目在代码中具有此命名空间:
Namespace Areas.Users.Controllers
映射到MyCompany.MyAmazingVBProject.Areas.Users.Controllers,而C#中的等效名称空间将包含以下代码:
namespace MyCompany.MyAmazingCSProject.Areas.Users.Controllers { ... }