我尝试使用不同项目中的区域创建简单的概念验证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吗?因为我发现这个答案可以在将来删除:What are the pros and cons of Areas implemented as single projects vs multiple projects in asp.net mvc
我还没有找到MVC4的任何方法。
解决方案的结构很简单:
Solution 'MvcAreasMultiProject'
Areas [Directory]
Admin [Project]
Models
Views
Controllers
Routes.cs [Examples]
MvcAreasMultiProject [MainProject]
- References Admin project
M.V.C
Admin项目的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" }
);
}
}
}
感谢您的帮助!
答案 0 :(得分:27)
您可以使用RazorGenerator包将Razor视图嵌入到单独的程序集中。以下是使这项工作的步骤:
Razor Generator
Visual Studio扩展程序(工具 - >扩展和更新...)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
答案 1 :(得分:0)
就我而言,除了上面达林建议的第9步之外,我已经完成了所有步骤:
剩下的就是在主MVC中引用类库 应用。
该解决方案不需要编译参考,因此我忽略了它。但是在运行时,系统无法正确路由请求。只是抬起头,以防别人忽略了这个小问题。