0

我已经为 stackoverflow 的问题建立了一个类似的友好 URL 系统。

旧的 URL 语法是:localhost:12345:/cars/details/1234

我已经设置了返回 301 和 URL 生成,但是当 url 重定向到时获取文件不存在错误:

localhost:12345/cars/details/1234/blue-subaru(因为最后一个“blue-subaru”)

我当然想要:localhost:12345/cars/1234/blue-subaru :)

我怎样才能做到这一点?谢谢

4

2 回答 2

3

这是一个路由问题,因此您应该像这样对路由进行一些更改

routes.MapRoute(
               "Default", // Route nameRegister
               "{controller}/{action}/{id}/{name}", // URL with parameters
               new { controller = "test", action = "Index", id = UrlParameter.Optional,name = UrlParameter.Optional } // Parameter defaults
           );

我想这会对你有所帮助。

于 2013-01-10T11:04:20.937 回答
2

您可以配置您的路线以在 global.asax 上的 RouteTable 中接受汽车的名称。

routes.MapRoute( 
    "Cars", 
    "Car/{id}/{carName}", 
    new { controller = "Car", action = "Details", id =  UrlParameter.Optional, carName =  UrlParameter.Optional } 
);

在你的CarController你可以有你的 Detail 操作方法并获取两个参数(id 和 carName):

public ActionResult Details(int? id, string carName) 
{ 
   var model = /* create you model */

   return View(model);
}

您的操作链接应如下所示:

@Html.ActionLink("Text", "Details", "Car", new { id = 1, carName="Honda-Civic-2013" })
于 2013-01-10T11:06:23.547 回答