Могу ли я добавить класс в 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;" }
)
Damb
источник
Спасибо за отличные ответы. Но теперь я сбит с толку, потому что вижу три разных способа сделать это с разными параметрами. Может кто-нибудь дать мне какую-нибудь идею, которая может быть лучше. Огромное спасибо.
Санго
1
@Sango: Первый параметр - это фактический текст ссылки, который будет показан. Второй параметр - это название действия. Третье - имя контроллера. В-четвертых, это объект, содержащий значения маршрута (то есть объект, который вам нужно передать маршруту / действию) - в этом случае он вам не нужен, поэтому просто сделайте его «нулевым». И последний - это объект htmlAttributes, который имеет такие свойства, как 'class', который добавляет предоставленную строку / s в качестве класса css к вашей ссылке. Вы можете увидеть больше в уже упомянутой документации . Сразу отметим, что ответ от Rhapsody не работает из-за ..
Дамб
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
Об / мин1984
источник
@RPM - быстрый вопрос. Могу ли я указать для этой ссылки что-то вроде ширины? Текст моей кнопки шире обычного, и я хотел бы изменить ширину.
Санго
@Sango: Посмотрите мой ответ, чтобы узнать, как добавить пользовательские стили к вашей ссылке.
Damb
Я пробовал, но это не работает. Он просто указывает параметр, называемый шириной, со значением 100 пикселей в маршруте адреса :-(
Sango
@Sango: Похоже, мой ответ неделим для вас. Тогда не беспокойся. Вот вам и попытки помочь с рабочим ответом с самого начала :)
Дамб
Кстати, использование @style- плохая практика. ИМО это так же плохо, как и использовать <div style="color:red;">. Используйте класс CSS.
RPM1984
7
Html.ActionLink("Create New", "Create", null, htmlAttributes: new { @class = "className" })
Archil
источник
5

Вы можете использовать перегрузку ActionLink, которая принимает параметр htmlAttributes, чтобы добавить класс к сгенерированному элементу:

Html.ActionLink("Create New", "Create", new {}, new { @class = cssClass });
Verdesmarald
источник
5

Согласно документации , это должно помочь:

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

Изменить: Спасибо, что заметили Dampe, я обновил образец кода.

Рапсодия
источник
3
-1, это не работает . Вы изменили порядок параметра имени контроллера и параметра имени действия. В моем ответе вы видите правильный порядок.
Damb