Странное поведение Html.ActionLink () после обновления до бета-версии 1 - PullRequest
0 голосов
/ 18 декабря 2008

Я обновил большое приложение ASP.NET MVC, над которым я работал, до последней бета-версии сегодня, и после некоторых начальных проблем у меня это в основном снова заработало. Большая проблема в том, что у меня есть такие вещи:

<%= Html.ActionLink("LOGIN", "Index", "Authorization", new { redirect=Request.Url })%>

и

<%= Html.ActionLink("Edit this page", "Edit", "Webpages", new { id = wp.Id })%>

Отобразить ссылки как:

http://localhost:60321/calendar/edit?Length=8

Хотя и с разными «длинами». Я понятия не имею, почему это происходит; как будто мои таблицы маршрутов полностью сошли с ума. «calendar / edit / {id}» является допустимым маршрутом, но он занимает четвертое место в списке. Они отлично работали раньше.

Я как бы нахожусь в тупике, пытаясь выяснить, что происходит ... Текст ссылки прекрасно воспроизводится; это просто URL некоторых вызовов ActionLink, которые у меня не работают. Некоторые из них работают нормально. Вот пример одного, который отлично работает:

<%= Html.ActionLink("ADMIN", "Index", "ControlPanel") %>

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 18 декабря 2008

При просмотре сигнатур методов в ActionLink кажется, что они изменились, и оно соответствует следующему:

ActionLink( string linkText, string action,
            object values, object htmlAttributes );

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

ActionLink( string linkText, string action, string controller,
            object values, object htmlAttributes );

Это будет выглядеть так:

<%= Html.ActionLink("LOGIN",
                    "Index",
                    "Authorization",
                    new { redirect=Request.Url },
                    null )%>

Исходный код для MVC Beta 1 находится по адресу http://www.codeplex.com/aspnet (сервер SCC в данный момент не работает) 18.12.2008 1: 16PM CST). Я нашел подписи через intellisense.

...