WebFormViewEngine käyttää näkymiin .aspx- ja .ascx-tiedostoja sekä perinteisestä ASP.NET:stä tuttua syntaksia eli html:ää, jonka seassa on <% ... %> -tägejä, joilla erotellaan C#-koodi. Esimerkiksi /Views/Home/Index.aspx -tiedosto
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" >
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: View.Message %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
</asp:Content>
aspx:n ja ascx:n ero on se, että aspx:ää käytetään yleensä sivuna (esim. blogisivu) ja ascx:ää uudelleenkäytettävänä sivun osana (esim. blogin merkinnät, joita tulee sivulle monta kappaletta).
Arvo voidaan tulostaa html:n sekaan sellaisenaan seuraavasti
<p>
<%=olio.Tieto %>
</p>
Jos arvon haluaa html-enkoodata (eli näyttää tägit tekstinä, < muuttuu < jne. ), on siihen syntaksi
<h2><%:olio.Tieto %></h2>
C#-koodissa voi tehdä sellasia rakenteita kuin haluaa
<ul>
<% foreach(var olio in Model)
{ %>
<li><a href="/oliot/<%=olio.Id %>/tiedot/"><%=olio.Nimi %></a></li>
<% } %>
</ul>
Kannattaa muistaa, että HtmlHelper tarjoaa apumetodeita html:n muodostamiseen, jolloin vältetään osa tuollaisesta tägisotkusta.
public class JokuController : Controller
{
public ActionResult Index()
{
// tee jotain
// palauta näkymä
return View("~/Themes/Default/Views/Index.aspx");
}
}
MasterPagen koodi alkaa seuraavan tyyppisellä rivillä
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
Loput koodista voikin olla mitä tahansa html:stä, <% ... %> ja <asp: />-tägeistä koostuvaa.
Sivu saadaan käyttämään tiettyä MasterPagea, kun sen alussa olevalla rivillä on määritelty MasterPageFile-arvo
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
xml<asp:ContentPlaceHolder ID="MainContent" runat="server" />
Noita voi olla useita ja kullakin tulee olla yksilöllinen ID-arvo. Sivuilla noiden paikalle sijoitetaan muuttuvia tietoja Content-tägillä
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">;
<p>
Sivukohtaista tietoa...
</p>
</asp:Content>
Se minkä paikanpitäjän tilalle tiedot menevät määräytyvät tuon ContentPlaceHolderID-tiedon perusteella.