如何在 asp.net mvc 中使用另一个项目的部分视图
How to use partial view from another project in asp.net mvc
我有两个 MVC 项目,一个作为父项目,另一个作为子项目。子项目添加对父项目的引用。我喜欢使用来自子项目的父项目的部分视图,例如 -
@Html.Partial("_GenericGreeting")
<-- 在子项目中
_GenericGreeting.cshtml
<-- 在父项目中
子项目是启动的项目。我的意思是父项目就像一个 base/shared 项目。 RazorGenerator 已安装在两个项目上,每个项目都可以编译成单个程序集。
当我 运行 项目时,我只收到以下错误。
The partial view '_GenericGreeting' was not found or no view engine
supports the searched locations.
如果我复制局部视图并将其粘贴到子项目中,这很好,但我不想复制文件。
我试过 this post 但没有成功,也许我没有正确添加它。
不是很好,但可以解决您的问题的简单解决方案。重载之一 @Html.Partial()
允许您写入视图的完整路径。
像这样:
@Html.Partial("~/View/Shared/_GenericGreeting.cshtml")
我接受了teo的回答。他帮助了我并给了我解决问题的线索。但是有几件重要的事情需要检查。
我不知道的一件事是生成的 cshtml 文件具有名为 PageVirtualPathAttribute
的属性。我无法获得正确组合的一个问题是因为我弄错了路径。
另一件要看的东西是这个 class,它是在您安装 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")
我有两个 MVC 项目,一个作为父项目,另一个作为子项目。子项目添加对父项目的引用。我喜欢使用来自子项目的父项目的部分视图,例如 -
@Html.Partial("_GenericGreeting")
<-- 在子项目中
_GenericGreeting.cshtml
<-- 在父项目中
子项目是启动的项目。我的意思是父项目就像一个 base/shared 项目。 RazorGenerator 已安装在两个项目上,每个项目都可以编译成单个程序集。
当我 运行 项目时,我只收到以下错误。
The partial view '_GenericGreeting' was not found or no view engine supports the searched locations.
如果我复制局部视图并将其粘贴到子项目中,这很好,但我不想复制文件。
我试过 this post 但没有成功,也许我没有正确添加它。
不是很好,但可以解决您的问题的简单解决方案。重载之一 @Html.Partial()
允许您写入视图的完整路径。
像这样:
@Html.Partial("~/View/Shared/_GenericGreeting.cshtml")
我接受了teo的回答。他帮助了我并给了我解决问题的线索。但是有几件重要的事情需要检查。
我不知道的一件事是生成的 cshtml 文件具有名为 PageVirtualPathAttribute
的属性。我无法获得正确组合的一个问题是因为我弄错了路径。
另一件要看的东西是这个 class,它是在您安装 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")