我为多个客户端创建了一个应用程序。客户端之间唯一的区别是静态页和一些图形。我希望每个客户端只使用不同的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文件中有以下内容:
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 }
);
}用解决方案更新:
以下是我正在寻找的答案:
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 }
);发布于 2015-02-23 15:35:32
注:没有测试,只是一个想法。无法在注释中格式化
您可以用客户端url命名css文件如下:
test.com.styles.css
编辑
我刚刚意识到我们不能访问HttpContext中的BundleConfig.cs,因为会话目前还没有创建。
因此,在您查看(_Layout.cshtml)时,您将生成样式表名称,如下所示:
@{
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/questions/28676137
复制相似问题