@ Html.ActionLink не отображается как ожидается - PullRequest
0 голосов
/ 29 ноября 2010

У меня есть это в моем Global.asax.cs:

routes.MapRoute(
            "User",
            "User/{username}/{action}",
            new { controller = "User", action = "Index", username = "*" }
        );

Тогда на моем _Layout.cshtml у меня есть этот код:

            <ul id="menu">
            @if (!String.IsNullOrEmpty(Context.User.Identity.Name))
            {
                <li>@Html.ActionLink("Home", "Home", new { controller = "User" }, new { username = Context.User.Identity.Name })</li>
            }


            </ul>

        </div>
    </div>

Дело в том, что она будет правильно отображать ссылку при первом ее просмотре. (Ссылка будет / User / rob / Home, где «rob» - это имя пользователя. Если я перехожу в другое место на странице и затем нажимаю на свою ссылку, ссылка отображается как / User / * / Home. код, Context.User.Identity.Name каждый раз корректен.

Я что-то упустил здесь? Я не уверен, что искать.

1 Ответ

0 голосов
/ 29 ноября 2010

Это именно то, что вы должны ожидать, учитывая этот маршрут. Вы не указываете username в словаре значений маршрута, но в атрибутах HTML, поэтому он принимает значение по умолчанию из маршрута *. Вы должны использовать сигнатуру, которая позволяет указывать контроллер и действие в виде строк с дополнительными значениями маршрута в словаре.

@if (!String.IsNullOrEmpty(Context.User.Identity.Name))
{
     <li>@Html.ActionLink("Home", "Home", "User" new { username = Context.User.Identity.Name }, null )</li>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...