0
我試圖在編譯和導入的MEF模塊中以我自己創建的模塊目錄中的.dll文件的形式訪問視圖。ASP MVC無法從導入的MEF模塊中查看視圖
在編寫MEF dll之後,我嘗試導航到已配置的模塊URL,以檢查模塊及其控件是否已正確導入,並且控件正試圖獲取正確的ActionView
但問題是.cshtml無法找到文件是我在想什麼。
我也有一個customViewEngine,根據指定的文件夾處理模塊視圖的映射。
爲customViewEngine
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Dependency_Injection_MEF_MVC.Components;
public class CustomViewEngine : RazorViewEngine
{
private List<string> _plugins = new List<string>();
public CustomViewEngine(List<string> pluginFolders)
{
//_plugins = pluginFolders;
DirectoryInfo d = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Modules/temp/"));//Assuming Test is your Folder
FileInfo[] Files = d.GetFiles("*.dll"); //Getting Text files
foreach (FileInfo file in Files)
{
_plugins.Add(file.Name.Substring(0, file.Name.IndexOf('.')));
}
ViewLocationFormats = GetViewLocations();
MasterLocationFormats = GetMasterLocations();
PartialViewLocationFormats = GetViewLocations();
}
public string[] GetViewLocations()
{
var views = new List<string>();
views.Add("~/Views/{0}");
_plugins.ForEach(plugin =>
views.Add("~/Modules/temp/" + plugin + "/Views/Home/{0}")
);
return views.ToArray();
}
public string[] GetMasterLocations()
{
var masterPages = new List<string>();
masterPages.Add("~/Views/Shared/{0}.cshtml");
_plugins.ForEach(plugin =>
masterPages.Add("~/Modules/temp/" + plugin + "/Views/Shared/{0}.cshtml")
);
return masterPages.ToArray();
}
}
我得到這個錯誤,分析它,我可以看到,其檢查的最後兩個地方是它應該駐留,但視圖引擎無法找到它,即使它是存在的代碼。
所以TL:博士
創建sperate項目,它們組成爲一個主要項目MEF部分,作曲之後,我試圖通過導航到模塊的控制器的網頁來測試它在哪裏我迎接上面的錯誤。