2017-02-18 75 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放在您想要的文档中以保持一致性!