5

私はマルチテナント アプリケーションを使用しており、着信要求の URL に基づいてどの CSS ファイルをバンドルするかを制御する最も簡単な方法を決定しようとしています。

Url を文字列として受け取り、それに応じてバンドルする RegisterBundles() 内にいくつかの条件付きロジックを含めることができると考えています。

public static void RegisterBundles(BundleCollection bundles, string tenant = null) {
     if (tenant == "contoso"){
           bundles.Add(new StyleBundle("~/contoso.css") 
     }
}

しかし、文字列を RegisterBundles に渡す方法も、それが可能かどうかも、正しい解決策もわかりません。ここでの助けは素晴らしいでしょう。

4

3 に答える 3

0

私は英語が苦手ですが、ページで URL を実行するときにどの CSS ファイルをロードするかを処理する必要があるということであれば、コントローラーで CSS ファイルを処理できます。

  • まず、コントローラー名を作成します: ResourceController

    // CREATE PATH TO CSS FOLDER, I store in webconfig     <add key="PathToStyles" value="/Content/MyTheme/" />
    private static string _pathToStyles = ConfigurationManager.AppSettings["PathToStyles"];
    
    public void Script(string resourceName)
    {
        if (!String.IsNullOrEmpty(resourceName))
        {
            var pathToResource = Server.MapPath(Path.Combine(_pathToScripts, resourceName));
    
            TransmitFileWithHttpCachePolicy(pathToResource, ContentType.JavaScript.GetEnumDescription());
        }
    }
    
    public void Style(string resourceName)
    {
        if (!String.IsNullOrEmpty(resourceName))
        {
            var pathToResource = Server.MapPath(Path.Combine(_pathToStyles, resourceName));
    
            TransmitFileWithHttpCachePolicy(pathToResource, ContentType.Css.GetEnumDescription());
        }
    }
    
    private void TransmitFileWithHttpCachePolicy(string pathToResource, string contentType)
    {
        //DO WHAT YOU WANT HERE;
        Response.ContentType = contentType;
        Response.TransmitFile(pathToResource);
    }
    
    //You can handle css or js file...
    private enum ContentType
    {
        [EnumDescription("text/css")]
        Css,
        [EnumDescription("text/javascript")]
        JavaScript
    }
    
  • ファイル Global.asax.cs で、アプリケーションの start medthod にルート構成が含まれていることを確認します。

    protected void Application_Start()
    {
         RouteConfig.RegisterRoutes(RouteTable.Routes);
    
    }
    
  • routeConfig に移動し、以下のマップをこのファイルに追加します (このファイルの先頭に追加する必要があります)。

      routes.MapRoute(
            name: "Resource",
            url: "resource/{action}/{resourceName}",
            defaults: new { controller = "Resource" }
        );
    
  • 次に、UrlHelperExtensions クラスを作成します。パスは webconfig ファイルと同じです

    public static class UrlHelperExtensions
    {
        public static string Style(this UrlHelper urlHelper, string resourceName)
        {
        return urlHelper.Content(String.Format("~/resource/style/{0}", resourceName));
        }
     }
    
  • そして今から、次のようにビューで css ファイルを定義できます。

..."<"link href="@Url.Style("yourcss.css")" rel="stylesheet" type="text/css" />

  • この助けを願っています
于 2013-11-13T09:37:40.253 に答える