Views in Practice
The Views folder contains the HTML files for a view. Their extension will be determined by their code.
File types commonly found in the folder include, but are not limited to the following types:
HTML | .html |
ASP | .asp |
ASP.NET | .aspx |
ASP.NET Razor C# | .cshtml |
ASP.NET Razor VB | .vbhtml |
One folder exists for each controller.
RAZOR VIEW ENGINE
Modifying a controller class to use a view template file creates a view. The Razor view engine is one tool for creating a view template. Some developers prefer Razor due to its clean, minimalist code and the speed of developing code for a template. There are many ways to create a template, but the general syntax used follows:
@{ var name = “Text”; @* Comments *@ @* Comments *@ statement; } <html> <body> <center> <h2>Text</h2> <p><%Script%></p> </center> </body> </html>
Add code by starting a block with the “@” character. Enclose code blocks in curly braces. End statements with a semicolon, enclose literal string values with double quotation marks, and enclose comments with “@*” and “*@.” Whitespace has no effect on statements.
Note that code is case sensitive; for example, two variables with the same name in different cases (e.g., “powertools” and “PowerTools”) will be treated as 2 different variables.
Review a sample document template below:
@using Payroll.UI.Repo; @{ ManageLink(new LinkEntry {Type = "image/x-icon", Rel = "shortcut", Href = Url.Content("~/design/objects/tree.ico")}); } <!DOCTYPE html> <html lang="en" class="static @Repo.PageClass()"> <head> <meta charset="utf-8" /> <title>@title</title> @Display(Model.Top) <%(function(elves)%> </head> <body> @Display(Model.Middle) @Display(Model.Bottom) </body> </html>
LAYOUTS
Edit the _layout.cshtml file to modify a template and the general substance of a view. Typical edits include modifications to formatting, structure, and behavior; virtually identical to modifying any HTML document. Changes made to the layout file will be cloned in the _ViewStart.cshtml file. ViewBag can be used to modify the layout in use.
Review the sample layout template below:
@* Page.RegisterStyle("page.css"); *@ @{ Model.Top.Add(Display.Top(), "8"); Model.Top.Add(Display.TheUser(), "12"); Model.Top.Add(Model.SiteMap, "17"); } <div id="page"> <header> @Display(Model.Top) </header> <div id="main"> <div id="welcome"> @Display(Model.Welcome) </div> <div id="content-wrapper"> <div id="material"> @Display(Model.Material) </div> </div> <div id="sidebar-wrapper"> <div id="leftpane"> @Display(Model.Leftpane) </div> </div> </div> <div id="footer-wrapper"> <footer> @Display(Model.Bottom) </footer> </div> </div>
Though view templates offer more functionality capabilities (much like CSS sheets), best practices dictate to avoid performing logic or interaction with a view template. Maintain separation of objectives to keep code clean.