mvc 4 test

Tags:    asp.net mvc

<< < 12 > >>
Hejsa

Jeg forsøger at lære lidt mere omkring MVC og har derfor kastet mig over MVC 4. Syntaksen er lidt anderledes end det jeg kan finde om MVC 3 og bruger "@" langt mere end "<%" så kan være svært at finde rette og brugbare synes jeg, men ellers meget smart.
Det er lidt anderledes end jeg er vant til og også meget anderledes end det jeg har prøvet fra webforms (ASP.NET C#).
Indtil videre har jeg lavet mig selv en menu til at navigere, men ikke selve siderne endnu.

Det jeg forsøger nu at lave er at lave en menu der viser den aktive side, og ville gerne forsøge at holde det i rent c#, ASP.NET og MVC så vidt muligt.
Så kan jeg altid begynde at forbedre mine evner til javascript senere, men til at starte med vil jeg gerne holde mig til en ting af gangen.
Hvis jeg har:
LINK1
LINK2
LINK3
LINK4

Så vil jeg gerne have at LINK1 har en anden class sat i sit actionlink eller a-tag, således at det bliver fremhævet at det er dette der er valgt. Og såldes når man trykker på LINK2 så markeres denne og de andre bliver almindelige.

Min umiddelbare tanke er at holde en variabel der siger hvilket link der er trykket på.
Således at når man trykker på linket aktiveres min server-side og modtager dermed denne post-back hvor jeg kan sætte id'et på den valgte. Og i hver link kan jeg så lave et inline-script der ser om id'et på dette link er lig med navnet i variablen og ud fra dette sætter om der skal bruges klasse1 eller 2 (aktive).

Det hele laves i _layout.cshtml og har lidt kodestumper her:
Fold kodeboks ind/udCSharp kode 

Dog kan jeg ikke få den til at gøre det rigtigt da den altid blot sætter menupunkt 2 til det aktive efter at den første del sætter den activeClass & linkActiveClass.
Håber det er nogenlunde forståeligt og nogen har en ide om hvordan det kan løses.

Desværre har jeg ikke noget sted at ligge det og vise jer.



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Lige for at pointere, så er @-syntaxen det der kaldes Razor. Det er ikke unikt for MVC4, det er en engine på fod med ASP.NET Webforms, indført med MVC3.

Nu har jeg ikke prøvet MVC4 endnu desværre, der er nogle der insisterer på MVC3, men kunne forestille mig, at når du tilføjer en ny View-fil, så står der Razor et eller andet sted i en dropdown. i MVC3 kan man i hvert fald skifte engine, som efter ens eget velbefindende som det nu passer en.

Nok om det, så ville jeg heller ikke bygge hele min side op omkring Ajax kald. Jeg ville bruge @Url.ActionLink() til at lave almindelige links - du har hele dit layout i din layout fil, og tilpasser de enkelte view-filer efter sidens reelle indhold.



Det jeg mener er, når siden ikke skifter (url) så har du altid den samme side, hvordan vil du så fortælle google hvordan den skal indeksere din side. Jeg er ikke i tvivl om at det virker, det virker bare mystisk ud fra et SEO mæssigt synspunkt. Fx. vil du så kun have een side i din løsning?



HomeController.cs:

public ActionResult Robots()
{
Response.ContentType = "text/plain";
return View();
}

public ActionResult Sitemap()
{
Response.ContentType = "text/plain";
return View();
}

Robots.cshtml:

@{
Layout = null;
}

# robots.txt for @this.Request.Url.Host

User-agent: *
Disallow: /Administration/
Disallow: /Account/
Allow: /<Link2Controler(Name)>/<Link2ControlerMethod>/ #ikke nødvendig
.
.
SITEMAP: @this.Request.Url.Host+"/sitemap.txt"

Sitemap.cshtml:

@{
Layout = null;
}

@this.Request.Url.Host+"/"
@this.Request.Url.Host+"/<Link2Controler(Name>/"
@this.Request.Url.Host+"/<Link2Controler(Name>/<Link2ControlerMethod>/"
.
.
.

Global.asax.cs:

routes.MapRoute
(
"Robots.txt",
"robots.txt",
new { controller = "Home", action = "Robots" }
);

routes.MapRoute
(
"Sitemap.txt",
"sitemap.txt",
new { controller = "Home", action = "Sitemap" }
);



Indlæg senest redigeret d. 28.10.2012 10:46 af Bruger #17416
<< < 12 > >>
t