Razor is the template language used by ASP.NET MVC. This module can parse and compile Razor templates and then render them to HTML. While a bit outdated, this guide is a good quick reference for the Razor language syntax. This module uses the Razor engine from ASP.NET Core.
Whenever possible, the same conventions as the Razor engine in ASP.NET MVC were used. It's
important to keep in mind however, that this is not ASP.NET MVC. Many features you may
be used to will not work (like most of the HtmlHelper
extensions) and others just don't
make sense (like the concept of actions and controllers). Also, while property names and
classes in the two engines have similar names(such as HtmlHelper
) they are not the same,
and code intended to extend the capabilities of Razor in ASP.NET MVC probably won't work.
That said, a lot of functionality does function the same as it does in ASP.NET MVC.
Package
#n Wyam.Razor
Usage
-
Razor(Type basePageType = null)
Parses Razor templates in each input document and outputs documents with rendered HTML content. If
basePageType
is specified, it will be used as the base type for Razor pages. The new base type must derive fromWyamRazorPage<TModel>
.basePageType
Type of the base Razor page class, or
null
for the default base class.
Fluent Methods
Chain these methods together after the constructor to modify behavior.
-
IgnorePrefix(string prefix)
Specifies a file prefix to ignore. If a document has a metadata value for
SourceFileName
and that metadata value starts with the specified prefix, that document will not be processed or output by the module. By default, the Razor module ignores all documents prefixed with an underscore (_). Specifyingnull
will result in no documents being ignored.prefix
The file prefix to ignore.
-
WithLayout(DocumentConfig path)
Specifies a layout file to use for all Razor pages processed by this module. This lets you specify a different layout file for each document.
path
A delegate that should return the layout path as a
FilePath
.
-
WithLayout(FilePath path)
Specifies a layout file to use for all Razor pages processed by this module.
path
The path to the layout file.
-
WithModel(DocumentConfig model)
Specifies a model to use for each page based on the current input document and context.
model
A delegate that returns the model.
-
WithModel(Object model)
Specifies a model to use for each page.
model
The model.
-
WithViewStart(DocumentConfig path)
Specifies an alternate ViewStart file to use for all Razor pages processed by this module. This lets you specify a different ViewStart file for each document. For example, you could return a ViewStart based on document location or document metadata. Returning
null
from the function reverts back to the default ViewStart search behavior for that document.path
A delegate that should return the ViewStart path as a
FilePath
, ornull
for the default ViewStart search behavior.
-
WithViewStart(FilePath path)
Specifies an alternate ViewStart file to use for all Razor pages processed by this module.
path
The path to the alternate ViewStart file.
Input Metadata
The metadata values listed below apply to individual documents and are typically set from front matter (with just the name of the key) and used as inputs to the module to control behavior.
-
Keys.SourceFileName
:Wyam.Common.IO.FilePath
Used to determine if the source file name contains the ignore prefix.