Routing MVC虚荣URL路由?

Routing MVC虚荣URL路由?,routing,routes,asp.net-mvc-5,Routing,Routes,Asp.net Mvc 5,我使用的是.NETMVC5,我无法让虚荣URL路由正常工作,还没有找到一个在线的有效示例。RouteMagic没有做到这一点,尽管有人声称它做到了。我们的网站是多租户的。下面是一个例子: 假设我们的网站是www.example.com,当一个组织注册时,他们选择他们的url,然后他们的网站是www.example.com/OurOrganization。我还没有找到一个在C#MVC中工作的例子,这让我有点惊讶 因此,我甚至硬编码如下: routes.MapRoute( "OurOrgan

我使用的是.NETMVC5,我无法让虚荣URL路由正常工作,还没有找到一个在线的有效示例。RouteMagic没有做到这一点,尽管有人声称它做到了。我们的网站是多租户的。下面是一个例子:

假设我们的网站是www.example.com,当一个组织注册时,他们选择他们的url,然后他们的网站是www.example.com/OurOrganization。我还没有找到一个在C#MVC中工作的例子,这让我有点惊讶

因此,我甚至硬编码如下:

routes.MapRoute(
    "OurOrganization",
    "OurOrganization/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这是一种工作方式,但是当我将鼠标悬停在菜单上时,如果点击了没有“我们的组织”的正常标准路线,它会将链接显示为“我们的组织”。如果我在route表中的“OurOrganization”下添加“AnotherOrganization”,它将起作用,但始终默认为菜单上的“OurOrganization”

例如,我坐在

然后单击菜单中的“关于”,它将转到

?


我知道这不是正确的方法,这应该是一件容易的事情。我使用MeetUp并在那里主持我们的吉普俱乐部,他们正是这样做的,你选择你的url,他们把它钉在MeetUp.com的末尾,很漂亮。Meetup不能使用.NET,因为我在C#中还没有找到这样的例子,3天后就无法理解了。

我认为您需要使用类似于:

routes.MapRoute(
    "OurOrganization",
    "{organizationvanity}/{controller}/{action}/{id}",
    new { organizationvanity = "OurOrganization", controller = "Home", action = "Index", id = "" }
);
或者可以使用属性路由:

并用

[RoutePrefix("{client}/case")]

我知道这个问题已经问了2个月了,但是没有一个公认的答案…所以我希望这能有所帮助

这是一篇关于属性路由(即虚荣URL)的非常好的文章:

简而言之,最简单的方法是将其添加到RegisterRoutes中的RouteConfig:

    routes.MapMvcAttributeRoutes()
然后为所需的URL向控制器添加属性


例如…我添加了“”(不带单引号)作为我的一个控制器的属性,因此该控制器中任何操作的URL都将是索引页的URL,而不是/[controller]/[action]。

我只希望它这么简单!我认为stackoverflow是用C#写的,我看到这篇文章本身就有一个虚荣的url。不幸的是,我需要做的超出了routes所能做的。我有一个用于多语言MVC应用程序的示例,它涉及从MvcRouteHandler和另一个实现IRouteConstraint等的类派生而来,不适用于胆小的人。但是允许你说(英语)和(法语)等等,所以这基本上是一样的,但是非常复杂。