Asp.net mvc 4 单独项目中的ASP.NET MVC 4区域不工作(未找到视图)
我曾尝试使用单独项目中的区域创建简单的概念验证ASP.NETMVC4网站 我尝试了以下教程:(应用程序在虚拟目录中不工作…我使用IIS)。我希望有比虚拟目录更好的方法 然后我尝试了这个教程: 但area项目的*.csproj中没有“AreasManifestDir”元素(并且出现错误“未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的位置”) ASP.NET中是否仍然支持MVC4?因为我发现这个答案,它可以在将来删除: 我还没有找到任何MVC4的操作方法 解决方案的结构很简单:Asp.net mvc 4 单独项目中的ASP.NET MVC 4区域不工作(未找到视图),asp.net-mvc-4,asp.net-mvc-areas,asp.net-4.5,Asp.net Mvc 4,Asp.net Mvc Areas,Asp.net 4.5,我曾尝试使用单独项目中的区域创建简单的概念验证ASP.NETMVC4网站 我尝试了以下教程:(应用程序在虚拟目录中不工作…我使用IIS)。我希望有比虚拟目录更好的方法 然后我尝试了这个教程: 但area项目的*.csproj中没有“AreasManifestDir”元素(并且出现错误“未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的位置”) ASP.NET中是否仍然支持MVC4?因为我发现这个答案,它可以在将来删除: 我还没有找到任何MVC4的操作方法 解决方案的结构很简单: Solut
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" }
);
}
}
}
谢谢你的帮助 您可以使用该包将Razor视图嵌入到单独的程序集中。以下是实现此功能的步骤:
AreasLibrary
的解决方案中添加一个新的类库项目(您还可以使用ASP.NET MVC项目模板在Razor视图中获取Intellisense)razogenerator.Mvc
numget安装到AreasLibrary
项目区域库
项目中添加控制器(~/Areas/Admin/Controllers/HomeController.cs
):
~/Areas/Admin/Views/Home/Index.cshtml
):
参考资料:就我而言,除了上面Darin建议的第9步之外,我已经完成了所有工作: 剩下的就是在主MVC中引用类库 应用程序
这个解决方案不需要编译引用,所以我忽略了它。但在运行时,系统未能正确路由请求。提醒一下,以防其他人忽略了这一小点。对我的问题可能有点不同的答案,但答案是正确的。我想使每个地区不同的项目。因此,步骤1-4是正确的。不必创建一个包含所有区域的项目,但将模型+视图+控制器直接添加到单独的项目中更简单。感谢您的帮助-使用RazorGenerator是解决方案。不,这些区域不是必需的,但是任何MVC开发人员都应该了解这些区域以及如何使用它们来更好地组织things@darin-dimitrov—假设我不想像您在上面的步骤9中所描述的那样将类库引用添加到主MVC应用程序,而是动态添加“发现”我的MVC区域类库。有什么方法可以做到这一点吗?我曾尝试使用Assembly.LoadFrom()来实现这一点,但我似乎从未找到视图。谢谢!我有一些类似的问题,但上述解决方案在我的情况下不起作用。我的问题是:@Rockdosta-你可能会发现这很有用。
public class HomeController: Controller
{
public ActionResult Index()
{
return View();
}
}
@* 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>
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 = "" }
);
}
}