首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >独立项目中的ASP.NET MVC 4区域不工作(找不到视图)

独立项目中的ASP.NET MVC 4区域不工作(找不到视图)
EN

Stack Overflow用户
提问于 2012-10-16 16:58:13
回答 2查看 19.3K关注 0票数 18

我尝试使用不同项目中的区域来创建简单的概念验证ASP.NET MVC4网站。

我尝试了以下教程:http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects (应用程序不能在虚拟目录中工作...我使用IIS)。我希望有比虚拟目录更好的方法。

然后我尝试了这个教程:http://forums.asp.net/t/1483660.aspx/1,但在area项目的索引中没有"AreasManifestDir“元素(并得到错误”视图‘索引’或其主视图未找到或没有视图引擎支持搜索的位置“)

在ASP.NET中是否仍然支持MVC4?因为我找到了这个答案,将来可以将其删除: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

管理项目的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" }
        );
    }
}
}

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 18:03:22

您可以使用RazorGenerator包将Razor视图嵌入到单独的程序集中。下面是实现这一点的步骤:

  1. 安装Razor Generator Visual Studio扩展(工具和扩展,并使用空模板Updates...)
  2. Create新的-> MVC 4应用程序。
  3. 将名为AreasLibrary的新类库项目添加到解决方案中(您也可以使用ASP.NET MVC项目模板,以便在Razor views)
  4. Install -> RazorGenerator.Mvc NuGet to AreasLibrary项目中获得智能感知。

<代码>H114在<代码>D15项目中添加控制器(<代码>D16):

公共类HomeController: Controller {公共ActionResult索引(){ return View();}}

  • 添加对应的视图(~/Areas/Admin/Views/Home/Index.cshtml):

@* RazorGenerator.

  • Inside : MvcView *@ @{ View1 = null;}布局索引视图

  • 在视图的属性中,将Custom Tool设置为布局类库添加一个~/Areas/AdminAreaRegistration.cs

公共类AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin";}} public override void (AreaRegistrationContext context) { context.MapRoute( "Admin_Default",“Admin/{AdminAreaRegistration}/{ id }”,AreaRegistration{ controller = "Home",AreaName= "Index",id= "“} );}}

  • 剩下的就是引用主MVC application.

中的类库了

参考:http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

票数 28
EN

Stack Overflow用户

发布于 2019-12-04 06:18:57

在我的例子中,我已经完成了上面Darin建议的第9步之外的所有步骤:

剩下的工作就是引用

应用程序中的类库了。

该解决方案不需要引用即可编译,因此我忽略了它。但是,在运行时,系统无法正确路由请求。只是提醒一下,以防其他人忽略了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12911006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档