我尝试创建简单的概念验证ASP。NET MVC 4网站在单独的项目中使用区域。
我尝试了以下教程:http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects(应用程序在虚拟目录中不起作用…我使用IIS)。我希望有比虚拟目录更好的方法。
然后我尝试了这个教程:http://forums.asp.net/t/1483660.aspx/1但是区域项目的*.csproj中没有"AreasManifestDir"元素(并且得到错误"未找到视图‘索引’或其主视图,或者没有视图引擎支持搜索到的位置")
ASP中还有支持吗。NET的MVC 4?因为我发现了这个答案,它可以在未来删除:在asp.net mvc 中,作为单个项目与多个项目实现的Areas的优缺点是什么
我还没有找到任何MVC4的操作方法。
解决方案的结构很简单:
Solution 'MvcAreasMultiProject'
Areas [Directory]
Admin [Project]
Models
Views
Controllers
Routes.cs [Examples]
MvcAreasMultiProject [MainProject]
- References Admin project
M.V.C
管理项目的Routes.cs:
namespace Admin
{
public class Routes : AreaRegistration
{
public override string AreaName { get { return "Admin"; } }
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_Default",
"Admin/{action}/{id}",
new { controller = "Admin", action = "Index", id = "" },
new[] { "Admin.Controllers" }
);
}
}
}
谢谢你的帮助!
您可以使用RazorGenerator包将您的Razor视图嵌入到一个单独的程序集中。以下是实现此功能的步骤:
- 安装
Razor Generator
Visual Studio扩展(工具->扩展和更新…) - 创建一个新的ASP。NET MVC 4应用程序使用空模板
- 向解决方案中添加一个名为
AreasLibrary
的新类库项目(您也可以使用ASP.NET MVC项目模板,以便在Razor视图中获得Intellisense) - 将
RazorGenerator.Mvc
NuGet安装到AreasLibrary
项目中 -
在
AreasLibrary
项目(~/Areas/Admin/Controllers/HomeController.cs
)中添加控制器:public class HomeController: Controller { public ActionResult Index() { return View(); } }
-
添加相应的视图(
~/Areas/Admin/Views/Home/Index.cshtml
):@* Generator: MvcView *@ @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>View1</title> </head> <body> <div> Index view </div> </body> </html>
-
在视图的属性中,将
Custom Tool
设置为RazorGenerator
。 -
在类库中添加一个
~/Areas/AdminAreaRegistration.cs
:public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_Default", "Admin/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); } }
-
剩下的就是引用主MVC应用程序中的类库。
参考:http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html
在我的情况下,除了Darin上面建议的第9步之外,我已经完成了所有的操作:
剩下的就是引用主MVC中的类库应用
该解决方案不需要引用来编译,所以我忽略了它。不过,在运行时,系统未能正确路由请求。只是提醒一下,以防其他人忽视了这一点。