添加始终约束到路由

时间:2016-11-15 08:44:13

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

我是ASP.Net Mvc的新手,我对路由配置感到困惑。在我将项目部署到生产后,需要更改网址。我的应用程序的第一个版本我的路由配置如下所示

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

但客户希望访问"http://{serveraddress}/ClaimFilePortal/{controller}/{action}/{id}"之类的应用程序。在此之后我改变了我的路由配置,如下所示。

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

但在控制器'代码有重定向,而mvc没有添加"ClaimFilePortal"约束。

        return RedirectToAction("Index2", "Account",
                new RouteValueDictionary(new { systemUserId = systemUserId, returnUrl = "/Upload/RedirectToFolder" + Request.Url.Query}));

那么,我如何为所有重定向添加配置(Redirect(), RedirectToAction(), RedirectToRoute() etc.)以在所有网址之前添加我的约束。

1 个答案:

答案 0 :(得分:0)

添加'ClaimFilePortal'作为默认前缀,从中删除{}并尝试如下:

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

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