asp.net MVC создает свои собственные маршруты - PullRequest
2 голосов
/ 20 августа 2009

Привет, я пытаюсь создать URL, который выглядит следующим образом:

черный / гранит / столешницы

где черный и гранит изменится, поэтому я попытался создать свои собственные маршруты в global.asax.cs примерно так:

 routes.MapRoute("Kitchen", "kitchen/[color]/[surface]/[type]",
                        new {controller = "kitchen", action = "surface"});

изменение URL на кухню / черный / гранит / столешницы

таким образом я думал, что смогу создать контроллер под названием кухня с действием, называемым поверхностью мой код для этого выглядит так:

public ActionResult surface(string color, string surface, string type)
    {
        ViewData["color"] = color;
        ViewData["surface"] = surface;
        ViewData["type"] = type;
        return View();
    }

однако, кажется, я не могу заставить его работать, я получаю ошибку 404 для этого URL, несмотря на мое пользовательское сопоставление, может кто-нибудь указать мне направление чтения, я читал эту страницу здесь: http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

это то, что дало мне идею, так как у него есть запрос и страница, код немного устарел, так как я использую предварительный просмотр MVC 2

большое спасибо

Ответы [ 2 ]

1 голос
/ 20 августа 2009

Проверьте Отладчик маршрута Фила Хаака , чтобы помочь вам увидеть, какой маршрут используется для каждого запроса.

1 голос
/ 20 августа 2009

Как это работает сейчас, в вашем global.asax, вам нужно что-то вроде этого:

 routes.MapRoute("Kitchen Surface Route", 
                 "kitchen/{color}/{surface}/{type}",
                 new {controller = "kitchen", action = "surface", color="", surface = "", type=""});

И тогда у вас будет ActionLink примерно так:

<%= Html.ActionLink("Link Text", "Kitchen", "surface", new {color="theColor", type="theType", surface="surfaceType"}, null) %>

Иногда с маршрутами может быть несколько сложно. Вы также можете использовать Route Debugger Фила Хаака , чтобы помочь вам.

...