【问题标题】:How to use partial view from another project in asp.net mvc如何在asp.net mvc中使用来自另一个项目的部分视图
【发布时间】:2015-11-02 10:29:16
【问题描述】:

我有两个 MVC 项目,一个作为父项目,另一个作为子项目。子项目添加对父项目的引用。我喜欢使用来自子项目的父项目的部分视图,例如 -

@Html.Partial("_GenericGreeting")

_GenericGreeting.cshtml

子项目是启动的项目。我的意思是父项目就像一个基础/共享项目。 RazorGenerator 已安装在两个项目上,每个项目都可以编译成单个程序集。

当我运行项目时,我只收到以下错误。

未找到部分视图“_GenericGreeting”或没有视图引擎 支持搜索到的位置。

如果我复制部分视图并将其粘贴到子项目中,那很好,但我不想复制文件。

我尝试了this post,但没有运气,但也许我没有正确添加它。

【问题讨论】:

  • 您能否展示您为实现类 CustomViewEngine 和 global.asax Application_OnStart() 所尝试的代码?它与您为 Razor 链接的帖子不同。
  • 嗨@RaulNoheaGoodness 我没有那个代码了..我只是快速尝试并且没有工作所以我删除了它..但我解决了我的问题。我用我拥有的修复程序创建了一个答案。谢谢。

标签: c# asp.net-mvc razor asp.net-mvc-partialview


【解决方案1】:

不是很好,但可以解决您的问题的简单解决方案。重载之一@Html.Partial() 允许您写入视图的完整路径。

类似这样的:

@Html.Partial("~/View/Shared/_GenericGreeting.cshtml")

【讨论】:

  • 谢谢@teo ..这可能是一个愚蠢的问题,但如果我想链接到不同的项目,你能在这里给我一个例子吗?在我的情况下如何编写完整路径?
  • @lawphotog 如果您想将目录更改为父污物,请使用..,如下所示:@Html.Partial("~/../../OtherProjectFolder/View/Shared/_GenericGreeting.cshtml")。但请确保您运行网站的进程有权访问此文件夹。
【解决方案2】:

我接受了 teo 的回答。他帮助了我,并给了我解决问题的线索。但几乎没有什么重要的事情需要检查。

我不知道的一件事是生成的 cshtml 文件具有名为 PageVirtualPathAttribute 的属性。我无法获得正确组合的一个问题是因为我弄错了路径。

另一件事是这个类,它是在您安装 RazorGenerator 时自动生成的,它位于您的 App_Start 文件夹中。

public static class RazorGeneratorMvcStart {
        public static void Start() {
            var engine = new PrecompiledMvcEngine(typeof(RazorGeneratorMvcStart).Assembly) {
                UsePhysicalViewsIfNewer = HttpContext.Current.Request.IsLocal
            };

            ViewEngines.Engines.Insert(0, engine);

            // StartPage lookups are done by WebPages. 
            VirtualPathFactoryManager.RegisterVirtualPathFactory(engine);
        }
    }

然而,这一行有一个重载方法来定义编译视图的路径。我的共享项目是别人创建的,他把这条路径放在里面。

var engine = new PrecompiledMvcEngine(typeof(RazorGeneratorMvcStart).Assembly, @"~/Areas/Cart/", null)

一旦我检查了这些位,我只需要按照 teo 的建议在我的视图中使用以下内容。

@Html.Partial("~/Areas/Cart/Views/Home/_GenericGreeting.cshtml")

【讨论】:

  • 将“区域”作为第一段是一种关键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多