Могу ли я добавить класс в 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', который добавляет предоставленную строку / 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

@RPM - быстрый вопрос. Могу ли я указать для этой ссылки что-то вроде ширины? Текст моей кнопки шире обычного, и я хотел бы изменить ширину.
Санго

@Sango: Посмотрите мой ответ, чтобы узнать, как добавить пользовательские стили к вашей ссылке.
Damb

Я пробовал, но это не работает. Он просто указывает параметр, называемый шириной, со значением 100 пикселей в маршруте адреса :-(
Sango

@Sango: Похоже, мой ответ неделим для вас. Тогда не беспокойся. Вот вам и попытки помочь с рабочим ответом с самого начала :)
Дамб

Кстати, использование @style- плохая практика. ИМО это так же плохо, как и использовать <div style="color:red;">. Используйте класс CSS.
RPM1984

7
Html.ActionLink("Create New", "Create", null, htmlAttributes: new { @class = "className" })

5

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

Html.ActionLink("Create New", "Create", new {}, new { @class = cssClass });

5

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

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

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


3
-1, это не работает . Вы изменили порядок параметра имени контроллера и параметра имени действия. В моем ответе вы видите правильный порядок.
Damb
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.