Asp.net mvc 4 MVC4URL路由:可选参数
在我的Asp.net mvc 4 MVC4URL路由:可选参数,asp.net-mvc-4,url-routing,Asp.net Mvc 4,Url Routing,在我的MVC4应用程序中,我希望根据客户端向用户显示数据。我想通过URL路由实现这一点 e、 g. 1. 2. 这里,“abc”和“xyz”被称为客户端代码。若用户输入第一个url,那个么应用程序将连接到客户端“abc”的数据库。若用户输入第二个url,那个么它将连接到客户端“xyz”的数据库 我想实现上述功能。那么我应该如何利用路由呢 我在RouteConfig中使用了以下代码- routes.MapRoute( name: "Default",
MVC4
应用程序中,我希望根据客户端向用户显示数据。我想通过URL路由实现这一点
e、 g.
1.
2.
这里,“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 }
);
提前感谢。您只能在ASP.NET MVC中选择最后一个参数。不要更改默认路由,而是为此特定URL创建新路由。确保在默认路由之前添加此路由
routes.MapRoute(
name: "Login",
url: "{clientcode}/account/login",
defaults: new { clientcode = UrlParameter.Optional, controller = "Account", action = "Login" }
);
您可以通过阅读ControllerContext.RouteData
来实现这一点。RouteData
对象包含值
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")
仅此而已。当您点击这些URL时会发生什么?很抱歉,描述不完整。若用户输入的url并没有客户端代码,例如,那个么应用程序应该连接到默认数据库。另一方面,它应该连接到特定于客户端的数据库。我可以从clientcode获取数据库连接字符串,因此我必须从url(RouteData)读取clientcode。我上面提到的url是虚拟url。