Endre standard route
Standardoppsettet til MVC5 sender oss til /Home/Index når vi ikke spesifiserer noe, men dette er konfigurerbart. I RouteConfig.cs (i mappa App_Start) har vi følgende:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Dette konfigurasjonen heter Default (hva den heter spiller egentlig ingen rolle), og den sier at det første ordet etter / skal være navnet på Controlleren og det andre skal være navnet på Action.
Til slutt kommer en valgfri id. Det betyr at hvis vi hadde valgt å kalle parameteren i
Show()-metoden vår for bare id (Show(int id))kunne vi vist personen vår med http://localhost:<port>/Person/Show/1337 i tillegg til http://localhost:<port>/Person/Show?personId=1337.
Det vi er ute etter er å endre standard-controlleren til å være Person i stedet for Home. Det kan vi enkelt gjøre med å skrive "Person" i stedet for "Home" på linja med defaults:.
RouteConfig.cs ser nå slik ut:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Person", action = "Index", id = UrlParameter.Optional }
);
}
}
Bygg på nytt (CTRL + F5). Verfiser at http://localhost:<port>/ leder til /Person/Index.
Fjerne linkene i hovedmenyen
Til tross for at vi nesten ikke har noe innhold i Index.cshtml har vi fremdeles menyen og diverse stilark (CSS-filer). Dette er samlet i en egen fil slik at vi skal slippe å skrive den samme koden i hvert eneste View. Denne layouten er definert i ViewStart.cshtml (i Views-mappa) som kjøres for hvert eneste View.
Den ser slik ut:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Her ser vi at vi setter standard-layouten for hver side til en annen .cstml-fil:
"~/Views/Shared/_Layout.cshtml";
Sett Layout = null; og refresh siden.
Ikke uventent har vi nå ikke lenger noe layout. Bytt tilbake til "~/Views/Shared/_Layout.cshtml"; og gå til fila.
Dette er en nokså vanlig html-fil med litt Razor-kode innimellom, men en linje er spesielt viktig å legge merke til:
@RenderBody()
Denne sier nemlig hvor resten av innholde skal plasseres.
Lenger opp ser vi en seksjon med linker:
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@Html.Partial("_LoginPartial")
</div>
Vi fjerner linkene til sidene som ikke lenger eksisterer, og gjør om linkene til startsiden slik at de passer til vår nye Controller:
@Html.ActionLink("MVC-intro", "Index", "Person", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Startside", "Index", "Person")</li>
</ul>
@Html.Partial("_LoginPartial")
</div>
Refresh siden og se at menyen har endret seg. Test gjerne de nye linkene.
<= Tilbake