Вопрос

У меня есть ссылка ниже на странице бритвы:

@Html.ActionLink("Create New Profile", "Create", "Profile", new { @class="toplink" })

Он появляется в источнике просмотра TES, как показано ниже:

<a href="/admin/profile/create?length=7" class="toplink">Create New Profile</a>

Когда я нажимаю на ссылку, URL такой:

http://localhost:54876/admin/profile/create?length=7

Я не хочу ?length=7. Отказ Почему этот автоматически генерируется?

Это было полезно?

Решение

То ActionLink Переопределить вас используете совпадения (String LinkText, string actionname, объект Routevalues, объект htmlattributes) переопределить. Так что ваше значение «профиля» передается на routeValues параметр. Поведение этой функции по отношению к этому параметру состоит в том, чтобы взять все общедоступные свойства на нем и добавить его в список значений маршрута, используемых для генерации ссылки. Поскольку строка имеет только одну публичную собственность (длина), которую вы в конечном итоге с «длиной = 7».

Правильная перегрузка, которую вы хотите использовать, является (String LinkText, String DiageName, строковое управление, объект Routevalues, объект htmlattributes) И вы называете это Loke так:

@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink"})

Другие советы

Я не уверен, что точная причина этого, но измените его на:

@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink" })

Я не знаю, какая перегрузка MVC выбирает при выходе из последнего параметра (htmlattributes это добавлена), но это исправит это. На днях я буду расследовать и выяснить, что именно происходит.

Другое, чтобы отметить, так как вы определяете контроллер в @ActionLink, который вам может не нужно делать, например, мнение, что ваш «создать новый профиль» @ActionLink Выражается в может быть "/admin/profile/index.cshtml", представление, который перечислены существующие профили, в этом случае вам не нужно определять контроллер в @ActionLink как то @ActionLink уже относительно ProfileController, Так что ваши @ActionLink может быть

@Html.ActionLink("Create New Profile", "Create", null, new { @class="toplink" })

я использовал null вместо new{} Как отмеченный ответ, я думаю, что это более уместно. Перегрузки ActionLink не являются наиболее простыми вещью.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top