Вопрос о кастомной маршрутизации в ASP.NET MVC - PullRequest
0 голосов
/ 04 октября 2010

Я должен заранее признать, что я довольно новичок в MVC, я просматривал ресурсы по адресу www.asp.net/mvc, но мне было интересно, можете ли вы, ребята, чем-нибудь помочь мне.

Меня попросили создать версию ASP.NET для существующего веб-сайта PHP, на этом веб-сайте имеется огромное количество ссылок на него в определенном формате, которые я должен воспроизвести в связи с объемом работыизменить все существующие ссылки будет слишком много.

Формат существующих ссылок:

/([A-Za-z0-9]{14})/([A-Za-z0-9_-]*)

Моя попытка создать собственный маршрут не работает.Что я сделал, так это изменил метод RegisterRoutes в файле Global.asax.cs на:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "ExistingLink",
        "{LinkId}/{Title}",
        new {controller="ExistingLinkController", action="Index"},
        new {LinkId = @"([A-Za-z0-9]{14})", Title = @"([A-Za-z0-9_-]*)"});

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

}

Я также создал 'ExistingLinkController' с действием 'Index';

public ActionResult Index(string LinkId, string Title)
{
    ViewData["LinkId"] = LinkId;
    ViewData["Title"] = Title;
    return View();
}

И представление, содержащее код;

<h2>LinkId: <%: ViewData["LinkId"] %>
</h2>Title: <%: ViewData["Title"] %></h2>

Но когда я пытаюсь перейти к;

/ 55a3ef90c4b709 / Это-просто-тест_0-9

Я получаю следующую ошибку:

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, если бы егоимя изменено или временно недоступно.Просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: / 55a3ef90c4b709 / This-is-a-test_0-9

Мне было интересно,любой может увидеть, что я делаю неправильно, и, возможно, указать мне правильное направление, возможно, указав на фрагмент кода, который неправильный, если это простая проблема, или указав мне на статью, которая поможет мне лучше понять, если я получилнеправильный конец флешки с этим материалом для маршрутизации.

Спасибо за любую помощь заранее

Satal: D

Ответы [ 2 ]

3 голосов
/ 04 октября 2010

Я думаю, что это:

 new {controller="ExistingLinkController", action="Index"},

Должно быть так:

 new {controller="ExistingLink", action="Index"},

MVC добавляет часть контроллера к самому имени - во втором маршруте контроллер также называется HomeController, но вы только вводите "Home" в качестве значения по умолчанию для аргумента контроллера.

2 голосов
/ 04 октября 2010

когда я застреваю с моими маршрутами, я использую отладчик маршрута от Фила Хака

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

просто эпично

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...