Razor Blade Fluent Tag API v3.0
The Tag Objects
The Tag
objects generate Html tags inside RazorBlade and provide a powerfull API will let you build html from code.
These docs will give you what you need to leverage the object.
Here you'll find:
- a Quick-Reference for the common API
- more instructions for doing specific things
- advanced API for special stuff
To see this in action with many examples, visit the RazorBlade Tutorials on 2sxc.org.
How to get Tag Objects
The following APIs will get you Tag
objects:
Tag.*()
where * is any standard HTML5 term, likeDiv
,Hr
,IFrame
etc. - returns a typed object with more methods likeSrc(url)
onTags.Img()
v2.2Tag.*(content)
same thing like above, but with content in the constructorTags.*(content1, content2, ...)
same thing like above, but with much content in the constructorTag.Custom(string tagName)
(more)
Fluent API for Tag (Chaining)
All these methods of a Tag
change the object, and return the object itself again. This fluent-API allows chaining them together, like
someTag.Id("someId").Class("float-right")
Below we'll explain the methods that all Tag objects have, but many have custom commands as well.
For example, an Img
Tag also has a Src(...)
while anA
Tag also has href
.
Some of the additional commands are extra-smart and automatically URI encode the value if not yet encoded.
Modifying Tag Attributes
Attr(name, [value], [separator])
add an attribute - if it already exists, it will replace the value, unless a separator is specified which will then append the new value.name
:string
, requiredvalue
:string
|object
|null
, optionalObjects
will be JSON serialized;null
will result in the attribute being added without a value, likedisabled
separator
:string
, default is ""
Separation character if we have to append to an existing value. If null, will replace instead of append.
Class(value)
set / add a class to the tag; if called multiple times, will append with a space between the original and new value. When calling with null, will reset the class to empty.Data(name, [value])
will add adata-{name}='value'
attribute.Id(value)
set the id attribute - if called multiple times, will always replace previous idOn(name, jsCode)
add an event-attribute likeonclick
Style(value)
set / add a class to the tag; if called multiple times, will append with a semicolon;
between the original and new value. When calling with null, will reset the id to empty.Title(value)
set the title attribute - if called multiple times, will always replace previous title
Modifying the Tag Contents
Add(value)
Add something to contents - at the end of existing content.value
:string
|Tag
|IEnumerable<string|Tag>
Add(value, value, ...)
v2.2
Add a many items to contents - at the end of existing content.value
:string
|Tag
Wrap(value)
Replaces the contentvalue
:string
|Tag
|IEnumerable<string|Tag>
Wrap(value, value, ...)
v2.2
Replaces the content with many itemsvalue
:string
|Tag
Output/Render API
A Tag
object and the two properties .Open
and .Close
all support IHtmlString
, so you can output them directly:
@myTag
will render the tag into the html. Implements IHtmlString and will not be encoded.@myTag.TagStart
will render the opening tag to html. Implements IHtmlString and will not be encoded.myTag.TagEnd
will render the close-tag to html. Implements IHtmlString and will not be encoded.
_Note: the TagStart
and TagEnd
have unusually long names, to ensure that the terms won't collide with future attribute names like Open
etc.
@using ToSic.Razor.Blade;
@Tags.Tag("br")
@Tags.Tag("div").Wrap("this is my message")
@{
var myStyle = Tags.Tag("style");
}
@myStyle.Open
.red { color: red};
@myStyle.Close
All Html5 Tags and Attributes
The Tag
object provides access to all known Html5 tags. Read the full API