This article does not apply to Umbraco 8.

    The concepts and code in this article have been deprecated in Umbraco 8 and no longer apply.
    If you are using Umbraco 7, this article is perfect for you!

    Converting Masterpages to Views

    Covers how you convert common syntax in Umbraco Masterpages to Umbraco Views.

    Page declaration and reference to parent template

    Masterpage

    <%@ master language="C#" masterpagefile="~/masterpages/umbMaster.master">
    

    Razor View

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage
    @{
        Layout= "~/Views/umbMaster.cshtml";
    }
    

    Server side forms

    Masterpage

    <form runat="server">
    

    Razor View

    Remove, not required in views

    Content area

    Masterpage

    <asp:content contentplaceholderid="footer">
        <p>Hello</p>
    </asp:content>
    

    Razor View

    @section footer {
        <p>Hello</p>
    }
    

    Content placeholder

    Masterpage

    <asp:contentplaceholder id="footer">
    

    Razor View

    @RenderSection("footer")
    

    If the View that inherits from this view is not required to define a "footer" section then you can add an extra false parameter (if you omit the boolean, it defaults to true):

    @RenderSection("footer", false)
    

    If you want to render the main body area then you can do the following (only allowed once per View):

    @RenderBody()
    

    Umbraco item

    Masterpage

    <umbraco:item field="bodyText" />
    

    Razor View

    @CurrentPage.bodyText
    

    Umbraco item with parameters

    Masterpage

    <umbraco:Item field="PostDate" useIfEmpty="createDate" formatAsDate="true" runat="server" />
    

    Razor View

    @Umbraco.Field("PostDate", altFieldAlias: "CreateDate", formatAsDate: true)
    

    Umbraco Macro

    Masterpage

    <umbraco:macro alias="topNavigation" />
    

    Razor View

    @Umbraco.RenderMacro("topNavigation")
    

    Umbraco Macro with parameters

    Masterpage

    <umbraco:macro alias="topNavigation" nodeId="1082" name="John" />
    

    Razor View

    @Umbraco.RenderMacro("topNavigation" new{ nodeId = 1082, name="John" })
    

    ASP.NET Textbox Control

    Masterpage

    <asp:textbox id="tb_member" runat="server" />
    

    Razor View

    @Html.TextBoxFor(model => model.MemberId)
    

    Or with some styling and a placeholder:

    @Html.TextAreaFor(model => model.MemberId,
            htmlAttributes: new { @class="span9 tokeninput", placeholder="Who should be notified?" })
    

    Or even in mostly plain HTML:

    <input type="text" name="MemberId" value="@Model.MemberId"
        class="span9 tokeninput" placeholder="Who should be notified?" />