Asp.net mvc 在ASP.NET MVC中存储指向内部内容页的链接

Asp.net mvc 在ASP.NET MVC中存储指向内部内容页的链接,asp.net-mvc,routing,Asp.net Mvc,Routing,我用的是这样的路线 routes.MapRoute( "PageBySlug", RouteType.Regular, "{slug}", new {controller = "Page", action = "Display", slug = "Default"}, null ); 将请求映射到~/Some Page Slug到~/Page/Display/

我用的是这样的路线

        routes.MapRoute(
            "PageBySlug",
            RouteType.Regular,
            "{slug}",
            new {controller = "Page", action = "Display", slug = "Default"}, null
            );
将请求映射到~/Some Page Slug到~/Page/Display/Some Page Slug

添加内容时,用户可以选择链接到现有页面以创建引用,然后我将这些链接以这种格式存储在数据存储中:“/Some Page Slug”

当我在Cassini中运行应用程序并从数据存储中拉出链接并将其附加到标签上时,它看起来像这样,并且这个链接可以工作

但是,当在IIS中某个网站下的虚拟目录中运行应用程序时,附加的链接会生成此URL,而该URL应该是

当然,这会产生404错误


我如何解决这个问题,使其在所有情况下都能普遍使用和工作?我应该在数据库中以不同的方式存储它,还是应该在运行时在视图中将其转换为正确的形式,以及如何实现这一点?

我已经找到了一种解决方案:

RouteValueDictionary routeValues = new RouteValueDictionary
                                            {
                                                {"slug", Html.Encode(Model.Url)}
                                            };
// the commented lines work in IIS but not is ASP.NET builtin server        
//string url = UrlHelper.GenerateUrl("PageBySlug", "Display", "Page", routeValues, RouteTable.Routes,
//Request.RequestContext, true);
string url = Url.Content("~/" + Html.Encode(Model.Url)); // this works in both
如果你有其他建议,欢迎