[英]How to access resources in a .net class library from web request
設置:我有一個.net 4.5類庫,該庫嵌入了資源(例如圖像)供其他ASP.NET MVC項目重用。 例如,類庫(名為BlockTypesLibrary)具有以下路徑:
我將Block.png的屬性設置為Build Action ==“ Embedded Resource”,並將復制類型復制到Output Directory ==“ Do Not Copy”。
現在在我的MVC項目中,我引用BlockTypesLibrary.dll,並使用Reflector,我看到列出的資源正確:
在模板中,我嘗試以多種不同方式訪問該資源,但是不能。 例如:
<div >
<img src="~/BlockTypesLibrary.Static.img.Block.png" alt="Block">
</div>
任何想法如何使這項工作? 我還需要將.cshtml模板作為資源包含在類庫中。
您將需要一個Controller,它將從另一個程序集中加載嵌入的資源映像。
圖書館項目
public class ResourceLoader
{
public static byte[] Load(string file)
{
using (MemoryStream ms = new MemoryStream())
{
// load resource
typeof(ResourceLoader).Assembly.GetManifestResourceStream(file).CopyTo(ms);
return ms.ToArray();
}
}
public static string[] Files()
{
// return list of embeded resource available
return typeof(ResourceLoader).Assembly.GetManifestResourceNames();
}
}
MVC項目
public class ImgController : Controller
{
[Route("~/img/embed/{*filename}")]
public ActionResult Embed(string filename)
{
byte[] content = ResourceLoader.Load(filename);
string mime = MimeMapping.GetMimeMapping(filename);
return File(content, mime);
}
}
View.cshtml
<div >
<img src="/img/embed/BlockTypesLibrary.Static.img.Block.png" alt="Block">
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.