Asp.net mvc 3 mvc3中的URL重写

Asp.net mvc 3 mvc3中的URL重写,asp.net-mvc-3,url-rewriting,Asp.net Mvc 3,Url Rewriting,我想访问一篇具有用户友好URL{id}/{title}的文章,它像{I}一样在内部处理这个URL。我已经为这些Url创建了一个Url路由规则 routes.MapRoute( "Article", "{controller}/{action}/{id}/{title}", new { controller = "content", action = "article", id = UrlParame

我想访问一篇具有用户友好URL{id}/{title}的文章,它像{I}一样在内部处理这个URL。我已经为这些Url创建了一个Url路由规则

 routes.MapRoute(
                "Article",
                "{controller}/{action}/{id}/{title}",
                new { controller = "content", action = "article", id = UrlParameter.Optional, title = UrlParameter.Optional }
                );

然而,它正在处理请求,但html响应正在出错。它正在更改所有图像、锚定、css和javascript url。将根url替换为/Content/Article,我的html显示混乱。所有css格式化都消失了。我已经尝试过IIS7.0重写模块和Asp.nET路由,这两个模块都给了我这个问题。

确保所有对外部文件的引用都是相对于您网站的根目录的


这不是ASP.NET路由的问题,而是如何引用外部文件的问题。

如果在浏览器中显式键入正确的url,您会得到正确的页面吗

我经常遇到这个问题,特别是当我有区域的时候。我发现对所有@Html.ActionLinks等使用T4MVC(NuGet包)可以解决这个问题。例如,使用T4MVC,而不是:

<li>@Html.ActionLink("Home Page", "Index", "Home")</li>
HtmlHelper.ActionLink(string linkText, string actionName, string controllerName)
而不是:

<li>@Html.ActionLink("Home Page", "Index", "Home")</li>
HtmlHelper.ActionLink(string linkText, string actionName, string controllerName)
出于我现在无法理解的原因(我已经忘记了原因!),我认为你正在讨论这个问题

只需检查并查看在地址栏中键入所需的Url是否有效。如果是这样,那么坏掉的是链路,而不是路由


如果您仍然有问题,那么这不是答案…

Url是相对的,我使用@Url.Content(“~/Content/Images/img.png”)作为视图中的图像源。我使用的是Razor视图。当使用url时,它会带来正确的页面,但它会修改Img、Css url以响应html。我在根目录中有图像文件夹,图像应该是“/Images/img.png”,但响应返回“/Conten/Images/img.png”。同样,css和脚本也是如此。我将内容作为放置css和图像的物理文件夹,在我的站点中也有ContentController。这可能是问题的根本原因吗?