How to render link with css class with Sitecore Glass Mapper
Asked Answered
H

3

9

I have the following link:

<a class="btn btn-primary" href="#">View details »</a>

How can I render the link with sitecore glass that it still keeps the css class? With the field renderer in sitecore you used to be able to pass the class along as additional parameters, how does this work with glass?

This is what I have so far:

@RenderLink(x => x.Link)

This only renders the link without the class though.

Any help appreciated. Thx.

Helbona answered 25/10, 2013 at 11:0 Comment(0)
C
21

You can also make a PageEditor enabled version like this and it should automatically take the Class attribute into account:

@Editable(Model, x => x.Link)

Or when you use RenderLink, you can pass a collection with the class attribute:

@RenderLink(x => x.Link, new System.Collections.Specialized.NameValueCollection { { "class", "btn btn-primary" } })

EDIT: Modified example to working code and added formatting example for Editable

You can specify a format for Editable:

@(Editable<YourModelType>(Model, x => x.Link, string.Format("<a href=\"{0}\" class=\"btn btn-primary\">{1}</a>", x.Link.Url, x.Link.Text)))
Cheremkhovo answered 25/10, 2013 at 12:28 Comment(6)
Hi Ruud, thanks for your reply: this seems to work: @(RenderLink(x => x.Link, new System.Collections.Specialized.NameValueCollection { { "class", "btn btn-primary" } }, isEditable: true)), how would I pass the class in your first example?Helbona
Added another example for EditableCheremkhovo
@RuudvanFalier - This doesn't seem to work with BeginRenderLink - it says class cannot be used as an assignment or target. Also, I don't have orange trousers, is this a problem?Gurl
@Gurl - Sounds to me like you have a typo. Also, it will not work without orange trousers, obviously..Cheremkhovo
note: passing an NVC object with class name doesn't work with @Editable(..).Stabler
Is it work in PE? First doesn't add class. Second throw exception.Gullah
D
8

@Editable(x => x.Link, new { @class = "btn btn-primary" })

Dialectal answered 29/4, 2016 at 6:24 Comment(0)
R
1

I have written a helper class using a Fluent API to allow you to add HTML attributes to glass helpers easily.

See blog here: http://mikerobbins.co.uk/2015/07/29/sitecore-razor-glass-attribute-helper-methods-fluent-api/

You can use the helper like this:

@Editable(x => x.Link,new HtmlAttributes().CssClass("Link").Render())
Rodeo answered 30/7, 2015 at 8:39 Comment(1)
Where exactly is HTMLAttributes coming from here?Gae

© 2022 - 2024 — McMap. All rights reserved.