asp.net – 是否可以访问位于另一个项目的MVC视图?

前端之家收集整理的这篇文章主要介绍了asp.net – 是否可以访问位于另一个项目的MVC视图?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将我的MVC项目分成几个项目

所以首先我创建了两个Project和Views项目

Front项目是一个包含控制器和模型的Web应用程序

Views项目是一个仅包含视图的类库项目

我的问题是如何使控制器调用位于Views项目中的视图

我有这样的控制器:

public ActionResult Default()
        {
            return this.View();
        }

解决方法

MVC不会将视图编译到DLL中,而是将它们作为您的站点目录根目录中的文件引用.按照惯例的位置是〜/ Views,并且跟踪搜索路径.这或多或少被硬编码到默认视图引擎中.

由于视图是文件,当您将它们分解为单独的项目时,它们将不存在于您的主要Web应用程序项目中.因此,视图引擎找不到它们.当您编译应用程序时,引用的任何项目只会复制DLL(并且可能还有其他一些事情,如pdb等)

现在,有办法解决这个问题,但老实说,他们通常比他们的价值更麻烦.您可以在mvc contrib项目中查看“便携式区域”,但是这些项目没有得到很好的支持,并且已经有人用NuGet打包来代替它们了.

您还可以遵循@ mo.esmp的建议,并创建一个自定义视图引擎,但是您仍然需要找出在构建和/或部署时可以访问该站点的位置复制视图的方法.

我的建议是不要以你所描述的方式打破项目.我没有看到任何价值.如果您的项目变得如此之大,我会将您的代码分成几个区域,并将所有区域代码和数据保存在一起.

将明确依赖于彼此的项目分离成单独的组件有什么价值,唯一目的是根据目的收集东西?我认为将模型分离成自己的项目有一些价值,因为模型可以由多个组件使用.然而,控制器和视图只能由MVC主站点使用.

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