2017-02-18 88 views
0

我想要實現:LazyLoad與ASP.NET核心 - 相對根路徑?

使用LazyLoad的data-original屬性,同時保持ASP.NET的~/路徑標識爲我相對根路徑!

什麼問題是:

data-original屬性不轉換我~/成我的圖片相對根路徑

正常圖像路徑:

<img src="www/folder/file.png" /> 

ASP.NET核心路徑: 這需要一個~/告訴ASP.NET,它是從根相對路徑

<img src="~/folder/file.png" /> 

LazyLoad的形象

<img data-original="/folder/file.png" /> 

有沒有人有任何經驗讓相對根路徑與LazyLoad的0123一起正常工作屬性?

我已經試着這樣做:

<img data-original="~/folder/file.png" /> 

但它不工作

回答

0

我想通了,我自己的答案。我決定在Controller中創建自己的相對根路徑變量,然後將值返回到View中。我在那個時候只需要使用Razor Markup插入變量並完成它!

我的環境:

  • .NET核心1.1
  • ASP.NET核心

控制器:

IHostingEnvironment服務有兩個特別感興趣的特性:ContentRootPathWebRootPath。對於我而言,我將使用ContentRootPath,因爲我想訪問換句話說wwwroot

private readonly IHostingEnvironment _hostingEnvironment; 

public HomeController(IHostingEnvironment hostingEnvironment) 
{ 
    _hostingEnvironment = hostingEnvironment; 
} 

確保將命名空間添加到文件的相對根路徑或!

using Microsoft.AspNetCore.Hosting; 

我完成後,我需要的控制器內奠定了基礎工作,在同一文件中,我只想要一個特定的頁面,利用我的工作。爲了簡單起見,它將在示例代碼中表示爲Index

public IActionResult Index() 
{ 
    ViewBag.wwwRootPath = _hostingEnvironment.ContentRootPath; 
    return View(); 
} 

查看:

好像在運行時構建微軟的.NET Core僅轉換~/到相對根目錄,如果它是一個元素中的src屬性中。所以那些正在使用第三方庫或者需要指定非文件調用方式的情況下,這個解決方案就足夠了,直到它們添加了可擴展性。

我將使用問題中的示例作爲解決方案的示例。因此,如上所述,此代碼在應用程序中不起作用。

<img data-original="~/folder/file.png" /> 

解決辦法:

<img data-original="@ViewBag.wwwRootPath/folder/file.png" /> 

注:這也對JavaScript和CSS的偉大工程!只需將ViewBag.wwwRootPath放在您想要的文檔中以保持一致性!