簡體   English   中英

如何從Web請求訪問.net類庫中的資源

[英]How to access resources in a .net class library from web request

設置:我有一個.net 4.5類庫,該庫嵌入了資源(例如圖像)供其他ASP.NET MVC項目重用。 例如,類庫(名為BlockTypesLibrary)具有以下路徑:

  • BlockTypesLibrary(項目)
    • 靜態的
      • IMG
        • Block.png

我將Block.png的屬性設置為Build Action ==“ Embedded Resource”,並將復制類型復制到Output Directory ==“ Do Not Copy”。

現在在我的MVC項目中,我引用BlockTypesLibrary.dll,並使用Reflector,我看到列出的資源正確:

  • BlockTypesLibrary
    • BlockTypesLibrary.dll
    • 資源
      • BlockTypesLibrary.Static.img.Block.png

在模板中,我嘗試以多種不同方式訪問該資源,但是不能。 例如:

  <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM