MVC中的自定义路由URL(appurl / {uniqueId} / {controller} / {action} / {id})

时间:2018-12-25 10:08:21

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我们正在尝试在c#中构建一个mvc应用程序。我们希望更改路由配置,使其在域URL和控制器名称之间具有uniqueId。uniqueId是动态的,并且基于uniqueId,应用程序将通过弹性数据库服务器连接到相应的数据库。

问题是mvc正在考虑将uniqueId作为控制器。当我搜索时,发现很少有解决方案,其中uniqueId是静态的并且已经定义。请找到错误图片link

的链接

例如: 我要构建如下所示的内容,但它不起作用

URL :portal.example.com/{uniqueId}/帐户/登录

RouteConfig

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

请帮助我们采用这种方法。还有其他方法可以使它正常工作。预先感谢

编辑:很抱歉,默认情况下使用的是主机名而不是uniqueId。我已编辑为uniqueid

3 个答案:

答案 0 :(得分:1)

RouteConfig.cs上写下

routes.MapMvcAttributeRoutes();

然后,将此顶部写在您的控制器上。

[Route("your_controller/your_ındex")]

答案 1 :(得分:0)

在路由表中生成的URL是在应用程序启动时。它们将始终保持静态。

一种解决方法是:-

[NonAction]
public static string GetGuid()
{
    string myUniqueID = Guid.NewGuid().ToString(); //My Unique ID Logic


    return myUniqueID;
}

您可以在整个应用程序中调用它。

答案 2 :(得分:0)

我通过在默认值中添加'uniqueid'来尝试了您的代码,对我来说很好

routes.MapRoute(
                name: "Default",
                url: "{uniqueId}/{controller}/{action}/{id}",
                defaults: new { uniqueId = UrlParameter.Optional, controller = "Account", action = "Login", id = UrlParameter.Optional, hostname = UrlParameter.Optional }
            );