加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:43:29 所属栏目:asp.Net 来源:网络整理
导读:我已经尝试使用单独项目中的区域创建简单的概念验证ASP.NET MVC 4网站. 我尝试以下教程:http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects(应用程序不工作在虚拟目录…我使用IIS).我希望有比虚拟目录更好的方法. 然后我尝试了这个教程:h
我已经尝试使用单独项目中的区域创建简单的概念验证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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读