Javascript 在.Net核心布局视图中以编程方式包括Css和Js文件
当我们使用standart.net平台时,我们能够通过操作包含css和js文件,通过这样的代码包含控制器名称Javascript 在.Net核心布局视图中以编程方式包括Css和Js文件,javascript,c#,css,asp.net-core,Javascript,C#,Css,Asp.net Core,当我们使用standart.net平台时,我们能够通过操作包含css和js文件,通过这样的代码包含控制器名称 string scriptSource = Url.Content(string.Format("~/js/page/{0}/{1}.js", controllerName, actionName)); if (System.IO.File.Exists(Server.MapPath(scriptSource))) { <script type="text/javascript
string scriptSource = Url.Content(string.Format("~/js/page/{0}/{1}.js", controllerName, actionName));
if (System.IO.File.Exists(Server.MapPath(scriptSource)))
{
<script type="text/javascript" src="@scriptSource"></script>
}
string scriptSource=Url.Content(string.Format(“~/js/page/{0}/{1}.js”,controllerName,actionName));
如果(System.IO.File.Exists(Server.MapPath(scriptSource)))
{
}
我们将这些代码放在布局中,当您将js文件夹命名为控制器名称,将js文件命名为操作名称时,它就工作了
一段时间前,我将project升级到.Net Core(2.1),并向BaseController注入依赖关系以获取Server.MapPath值,但我无法从_布局视图访问BaseController或codebehind以获取Server.MapPath。。如果你们中有人能成功,请告诉我。在ASP.NET核心中,我们不使用
Server.MapPath
。我们想改用IHostingEnvironment
在文件\u Layout.cshtml
中,您可以尝试:
@using Microsoft.AspNetCore.Hosting
@inject IHostingEnvironment environment
@{
string path = string.Format("js/page/{0}/{1}.js", controllerName, actionName);
}
@if (System.IO.File.Exists(System.IO.Path.Combine(environment.WebRootPath, path)))
{
<!-- file exist here... -->
}
为什么不在源代码中使用tilda呢?实际上,您不必在布局中使用server.mappath,因为当呈现页面时,它会自动解析。如果您尝试在.Net Core中使用
server.mappath
,则小狗将死亡。
public class HomeController : Controller
{
private readonly IHostingEnvironment _environment;
public HomeController(IHostingEnvironment environment)
{
_environment = environment;
}
public IActionResult Index()
{
string path = System.IO.Path.Combine(_environment.WebRootPath, "js/page/...");
return View();
}
}