Asp.net MVC 4.0:如何在 Asp.NET MVC 4.0 中为 JS、CSS 和图像等资产定义单独的 url?

Asp.net MVC 4.0 : How to define seperate url for assets like JS, CSS and Images in Asp.NET MVC 4.0?

我是 asp.net MVC 4.0 的新手,当我使用它开发 Web 应用程序时,我的应用程序在调试模式下正确拉取,但是当我通过 IIS 拉取它时它显示页面内容但没有 CSS 和 JS.

为了让 CSS 和 JS 等所有资源在 IIS 上运行,我还必须定义应用程序的 baseurl。

假设我的 baseURL 是 http://localhost/myapp 然后,在定义 CSS 路径时,我必须提及完整路径。

喜欢,http://localhost/myapp/css/style.css

有没有办法摆脱它。

如果我无法解释这个问题,请让我清楚概念,我会说清楚。

您可以使用相对 URL:

<link href="/myapp/css/style.css" rel="stylesheet">
<script src="/myapp/js/your.js"></script>

您可以选择使用 System.Web.Optimization 助手:

//Render styles:
@Styles.Render("~/myapp/css/style.css")

将呈现 <link href="/myapp/css/style.css" rel="stylesheet">

//Render scripts:
@Scripts.Render("~/myapp/js/your.js")

将呈现 <script src="/myapp/js/your.js"></script>

如果您使用 MVC bundling,您可以为您的资产定义自定义 url:

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/js/your.js").Include(
                 "~/myapp/js/your.js"));
}

然后在视图中这样使用它:

@Scripts.Render("~/js/your.js")

我更喜欢 Alok Kumar Nikhil 描述的方法

但是如果你想要这样的东西:base_url("CSS1.css")

你可以写一个自定义 html-helper

public static class HtmlExtensions
    {

        public static IHtmlString BaseUrl<TModel>(this HtmlHelper<TModel> htmlHelper, String FileName)
        {
                return MvcHtmlString.Create($"<Script src='/a/b/c/{FileName}'></Script>");
        }
    }

在您的视图中使用它

@Html.BaseUrl("CSS1.css")