MVC4 URL路由:可选参数

时间:2013-05-31 12:16:40

标签: asp.net-mvc-4 url-routing

在我的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 }
       );

提前致谢。

2 个答案:

答案 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")

关于它。