Чи можу я додати клас до HTML.ActionLink у MVC3


83

У мене є цей код, і я хотів би додати клас до посилання. Чи можна це зробити в MVC3?

Html.ActionLink("Create New", "Create")

клас як у "загальнодоступному класі MyClass {...}" або клас як у "<a class='form-control' href='/MyController/MyAction'> Створити новий </a>"?
LongChalk

Відповіді:


150

Так, ви можете просто додати ще один параметр із об'єктом, що представляє клас css:

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

Його можна перекласти на:

Html.ActionLink(link text, action name, controller name, route values object, html attributes object)

Редагувати:

Щоб додати власні стилі, використовуйте це:

Html.ActionLink(
"Create New",
"Create",
CONTROLLERNAME,
null,
new { @class= "yourCSSclass", @style= "width:100px; color: red;" }
)

Дякую за чудові відповіді. Але зараз я розгублений, бо бачу три різні способи цього, які мають різні параметри. Хтось може дати мені якусь ідею, яка може бути найкращою. Дуже дякую.
Санго,

1
@Sango: Перший параметр - це фактичний текст посилання, який буде показано. Другий параметр - назва дії. Третє - це назва контролера. По-четверте, це об’єкт, що містить значення маршруту (тобто об’єкт, який потрібно передати маршруту / дії) - у цьому випадку він вам не потрібен, тому просто зробіть його «нульовим». І останній - це об'єкт htmlAttributes, який має такі властивості, як 'class', який додає надані рядки / рядки як клас css до вашого посилання. Ви можете побачити більше у вже згаданій документації . Тільки зверніть увагу, що відповідь від Рапсодії не працює через ..
Damb

1
Немає "найкращого". Всі вони є перевантаженнями, які вказують на один і той самий базовий код для рендеринга прив'язки тегу. Яке перевантаження вибрати, залежить від того, що вам потрібно в URL-адресі.
RPM1984,

1
Всім велике спасибі. У мене зараз код працює, і він виглядає чудово.
Санго,

18
@Html.ActionLink("ClickMe",  // link text
                 "Index", // action name
                 "Home",  // controller 
                 new { id = 2131 }, // (optional) route values
                 new { @class = "someClass" }) // html attributes

@RPM - швидке запитання. Чи можу я вказати щось на зразок ширини, яка відрізнятиметься для цього посилання? Текст моєї кнопки ширший за звичайний, і я хотів би мати можливість змінювати ширину.
Санго,

@Sango: Перевірте мою відповідь, щоб побачити, як додати власні стилі до вашого посилання.
Damb

Я спробував це, але це не працює. Він просто вказує параметр, який називається шириною зі значенням 100 пікселів у адресному маршруті :-(
Sango,

@Sango: Здається, моя відповідь невидима для вас. Тоді не зважай. Стільки про спроби допомогти з робочою відповіддю з
самого

До речі, використання @style- погана практика. IMO - це так само погано, як і використання <div style="color:red;">. Використовуйте клас CSS.
RPM1984,


5

Згідно з документацією , це повинно зробити трюк:

Html.ActionLink("LinkText", "Action", "Controller", new { }, new {@class="css class"})

Редагувати: Дякую, що помітили Дампа, я оновив зразок коду.


3
-1, це не працює . Ви отримали змінений порядок параметрів імені контролера та параметра імені дії. Ви можете побачити правильний порядок у моїй відповіді.
Damb

4

Ви можете використовувати перевантаження ActionLink, яке приймає параметр htmlAttributes, щоб додати клас до згенерованого елемента:

Html.ActionLink("Create New", "Create", new {}, new { @class = cssClass });
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.