在我的MVC4
应用程序中,我想根据客户端向用户显示数据。我想用URL routing
来实现这个目标
例如
1. http://mysite.com/abc/account/login
2. http://mysite.com/xyz/account/login
这里,'abc'和'xyz'被称为客户代码。如果用户输入第一个URL,则应用程序将连接到客户端'abc'的数据库。如果用户输入第二个URL,则它将连接到客户端'xyz'的数据库。
我想实现上述功能。那么我应该如何利用路由。
我在RouteConfig中使用了以下代码 -
routes.MapRoute(
name: "Default",
url: "{clientcode}/{controller}/{action}/{id}",
defaults: new { clientcode = UrlParameter.Optional, controller = "Account", action = "Login", id = UrlParameter.Optional }
);
提前致谢。
答案 0 :(得分:0)
您只能在ASP.NET MVC中使最后一个参数成为可选项。不要更改默认路由,而是为此特定URL创建新路由。确保在默认路由之前添加此项。
routes.MapRoute(
name: "Login",
url: "{clientcode}/account/login",
defaults: new { clientcode = UrlParameter.Optional, controller = "Account", action = "Login" }
);
答案 1 :(得分:0)
您可以通过阅读ControllerContext.RouteData
来实现这一目标。 RouteData
对象包含Values
RouteValueDictionary
,您可以阅读并查询clientcode
。例如:
var clientCode = ControllerContext.RouteData.Values["clientcode"];
if (String.IsNullOrWhiteSpace(clientCode))
{
// Set to a default value
clientCode = "default_value";
}
// Do something with clientCode
return ViewResult(); // or RedirectToAction("ActionName")
关于它。