首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC /路由更改StyleSheet

MVC /路由更改StyleSheet
EN

Stack Overflow用户
提问于 2015-02-23 14:33:57
回答 1查看 1.4K关注 0票数 2

我为多个客户端创建了一个应用程序。客户端之间唯一的区别是静态页和一些图形。我希望每个客户端只使用不同的URL来显示具有不同css的核心内容,如下所示:

myapplication/client1 1/mycontroller/myaction

myapplication/client2 2/mycontroller/myaction

有人能给我一些关于如何在.NET MVC 4中实现is的建议吗?

附加信息:

我只部署这个应用程序的一个实例。我希望应用程序根据我的url中的"client“部分动态地使用适当的样式。

举例说明。client1有绿色背景,client2有蓝色背景。除此之外,client1和client2运行的是同一个web应用程序。

我的RouteConfig.cs文件中有以下内容:

代码语言:javascript
复制
public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "client1",
            url: "client1/{controller}/{action}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "client2",
            url: "client2/{controller}/{action}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

用解决方案更新

以下是我正在寻找的答案:

代码语言:javascript
复制
    routes.MapRoute(
    name: "client",
    url: "{client}/{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" },
    constraints: new { client = "client1|client2" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
EN

回答 1

Stack Overflow用户

发布于 2015-02-23 15:35:32

注:没有测试,只是一个想法。无法在注释中格式化

您可以用客户端url命名css文件如下:

test.com.styles.css

编辑

我刚刚意识到我们不能访问HttpContext中的BundleConfig.cs,因为会话目前还没有创建。

因此,在您查看(_Layout.cshtml)时,您将生成样式表名称,如下所示:

代码语言:javascript
复制
        @{
            var host = HttpContext.Current.Request.Url.AbsoluteUri;
    // Will be http://www.test.com/AREA1


            var area = host.Split('/')[3];

    // SPLIT will give you AREA1

            var styleSheet = string.Format("{0}.styles.css", area);

    // This will give you Stylesheet Name:
    // So then you can use simple HTML to load the css file

var styleSheetUrl = string.Format("{0}{1}", "/LocationOfCssFile/", styleSheet);

        }

    <link rel="stylesheet" href="@styleSheetUrl">

您可以从这里获得所需URL的正确部分:

https://stackoverflow.com/a/593715/1910735

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28676137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档