C# ASP.NET从另一个程序集加载视图
我有一个C#解决方案,包含两个项目:客户机(父项目)和RestAPI(子项目)。从客户端项目中,我正在加载一个ASP.NET服务器。当前,my RestAPI正在使用C# ASP.NET从另一个程序集加载视图,c#,asp.net,razor,.net-assembly,C#,Asp.net,Razor,.net Assembly,我有一个C#解决方案,包含两个项目:客户机(父项目)和RestAPI(子项目)。从客户端项目中,我正在加载一个ASP.NET服务器。当前,my RestAPI正在使用services.AddControllersWithViews().AddApplicationPart(assembly)从客户端项目成功加载控制器。目前,只能加载控制器,不过,我也想使用一些视图 总之,我要做的是使用RestAPI项目位于客户机项目中的视图 我试图做的是: services.AddControllersWith
services.AddControllersWithViews().AddApplicationPart(assembly)从客户端项目成功加载控制器代码>。目前,只能加载控制器,不过,我也想使用一些视图
总之,我要做的是使用RestAPI项目位于客户机项目中的视图
我试图做的是:
services.AddControllersWithViews().AddApplicationPart(程序集)代码>=>它仅加载控制器
services.AddMvc().AddApplicationPart(程序集)代码>=>相同的结果
返回视图文件的静态路径(即:返回视图(“C:\Simon\…”;
)
项目结构:
在控制器devicecontroller.cs
中,我必须执行以下功能:
[Route("show")]
[HttpGet]
public ViewResult Show()
{
return View("Home");
}
我想返回位于“客户端项目”下的“视图”文件夹中的视图。但是,它只返回RestAPI下的值。如果删除RestAPI中的一个,应用程序将崩溃,并出现以下错误日志:
System.InvalidOperationException:未找到视图“主页”。搜索了以下地点:
/视图/设备/Home.cshtml
/Views/Shared/Home.cshtml
我想你必须考虑添加相关的程序集。
private static void AddApplicationPart(IMvcBuilder mvcBuilder, Assembly assembly)
{
var partFactory = ApplicationPartFactory.GetApplicationPartFactory(assembly);
foreach (var part in partFactory.GetApplicationParts(assembly))
{
mvcBuilder.PartManager.ApplicationParts.Add(part);
}
var relatedAssemblies = RelatedAssemblyAttribute.GetRelatedAssemblies(assembly, throwOnError: false);
foreach (var relatedAssembly in relatedAssemblies)
{
partFactory = ApplicationPartFactory.GetApplicationPartFactory(relatedAssembly);
foreach (var part in partFactory.GetApplicationParts(relatedAssembly))
{
mvcBuilder.PartManager.ApplicationParts.Add(part);
}
}
}