asp.net-mvc-4 – ASP.NET MVC 4单独项目中的区域不工作(查看未找到)

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-4 – ASP.NET MVC 4单独项目中的区域不工作(查看未找到)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试使用单独项目中的区域创建简单的概念验证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

管理项目的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>

>在视图的属性中,将自定义工具设置为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",new { controller = "Home",id = "" }
        );
    }
}

>剩下的只是引用主MVC应用程序中的类库.

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

猜你在找的asp.Net相关文章