EDIT:
1) Jeg har opdaget noget jeg ikke forstår.
Da jeg forsøgte at få lavet et link med onclick-attribut på havde jeg lavet en anden løsning end den som der var lavet standart.
Standart løsning der fungerer:
- @Html.ActionLink("Link1", "Index", "HelloWorld", null, new { @class = "top-menu-link " + @ViewBag.TopMenuLink_One })
Den anden som ikke fungerer, men som jeg ikke kan finde ud af hvorfor ikke fungerer. Kan se at ActionName og ControllerName er samme sted og samme værdier, men alligevel fungerer den ikke.
- <a id="link_one" runat="server" href="@{Url.Action("HelloWorld", "Index");}" class="top-menu-link @ViewBag.TopMenuLink_One" >Link1</a>
Nogen der kan hjælpe mig med det?
2) NEDENSTÅENDE SPØRGSMÅL HAR JEG SELV BESVARET!
LØSNING:
- public HomeController()
- {
- ViewBag.TopMenuItem_One = "top-menu-item-active";
- ViewBag.TopMenuLink_One = "top-menu-link-active";
- }
Samme for alle andre der bruges. Tror jeg ved så småt at forstå det her MVC noget! Fed følelse!
>>>>>>>
Nu er dette sat i min Index()-metode i min HomeController (bruges til link1).
- public ActionResult Index()
- {
- ViewBag.TopMenuItem_One = "top-menu-item-active";
- ViewBag.TopMenuLink_One = "top-menu-link-active";
- return View();
- }
Og det samme er sat i Index()-metoden i min HelloWorldController (bruges i link2)
- public ActionResult Index()
- {
- ViewBag.TopMenuItem_Two = "top-menu-item-active";
- ViewBag.TopMenuLink_Two = "top-menu-link-active";
- return View();
- }
Hvis jeg så fortsat gerne vil blive ved med at have at mine menu'er skal blive ved med at være markeret når jeg fortsætter med at lave nye metoder og views skal jeg blive ved med at huske på at sætte dette i min viewbag eller i hver metode med et ActionResult kalde en metode der sætter disse værdier.
Kan det virkelig passe det skal laves så dumt og besværligt? Kan man ikk gøre noget så jeg ved at hver gang en metode kaldes i en Controller så sættes disse værdier automatisk ligesom man kan gøre i en constructor til en normal klasse?
-----------------------------------------
Der er ikke meget C# eller ASP.NET i det du viser der?
Hejsa Brian.
Nu er det kun designet jeg er ved at lave så der er ikke meget funktionalitet og dermed heller ikke meget ASP.NET eller C# at vise, men hvis du ser godt nok efter kan det godt ses.
Det hele er ihvertfald lavet i C# og MVC 4 fra Visual Studio 2011 Beta
Hvordan ville du have løst det hvis det var WebForms? Jeg tror ikke der er så meget forskel.
Jeg plejer at lave det i ViewBag objeket og så have din controller metode sætte en værdi du i din side kan kigge på og så sætte en klasse ud fra det.
Tak Brian.
Hvis jeg skulle lave det i webforms ville jeg formegentligt have en masterpage at jeg ville kunne modtage alle events i og identificere hvilket link der er blevet klikket på.
Jeg tror jeg har fået det løst nu ved at lave det i ViewBag som du sagde, så mange tak
Jeg har indtil videre brugt det eksempel der følger med og som man starter op på, og her ligger det hele i HomeController. Og det jeg så har gjort er at i Index() har skrevet klasse-navnet ind i ViewBag i en property speciel designet til det første link, og vil så også blive nødt til det til det næste link og det 4.
3) Der er vel en smartere og mere effektiv måde at lave det på? Synes selv det virker lidt langhåret ikke at lave en mere generel og smuk metode. Der må nogle af jer hajer kunne hjælpe mig lidt her til at lave noget der passer lidt til "the mvc way" i guess?
Indlæg senest redigeret d. 11.05.2012 23:31 af Bruger #17215