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

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

发布时间:2020-12-15 22:23:55 所属栏目:asp.Net 来源:网络整理
导读:我想将我的MVC项目分成几个项目 所以首先我创建了两个Project和Views项目 Front项目是一个包含控制器和模型的Web应用程序 Views项目是一个仅包含视图的类库项目 我的问题是如何使控制器调用位于Views项目中的视图 我有这样的控制器: public ActionResult De
我想将我的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主站点使用.

(编辑:李大同)

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

    推荐文章
      热点阅读