Ik ben thuis bezig met het maken van een MVC4 applicatie waarmee ik Comics vanaf een zelf geschreven API wil kunnen browsen.
Ik heb daarvoor een ComicController geschreven en in de global.asax routes naar die controller gedefiniëerd.
Daarnaast heb ik een view pagina gemaakt die, bij het openen van een comic de mogelijkheid biedt om naar de volgende pagina te browsen.
Mijn Global Asax ziet er wat routing betreft zo uit:
Mijn controller bevat de volgende Action definitie:
en mijn View bevat de volgende Html.ActionLink definitie:
Het vreemde is nu dat de href door de action link gerenderd wordt naar:
http://server/app/Comic/Read?file=<pad_naar_comic_bestand>/bestand.cbr&page=1
Dit werkt op zich, maar ik zou eigenlijk het liefst hebben dat de ActionLink gerenderd wordt naar
http://server/app/Comic/Read/<pad>/bestand.cbr/<page>
Ik krijg dit echter niet voor elkaar.
Ik heb pagina's aan documentatie doorgespit over de eigenschappen van ActionLink, maar ik kan geen manier vinden om de QueryString om te zetten naar een Routemapping.
Ik heb gevonden dat er verschillende manieren zijn om ActionLinks te definiëren in een view, maar ik krijg altijd de folder, file en page parameter als querystring gerenderd in plaats van als route.
Volgens mij heb ik wel op de juiste manier de route gedefiniëerd in de Global.Asax en ik weet nu niet meer wat ik verder nog kan proberen.
Als meer informatie nodig is, dan laat weten, ik kan meer code dan dit wat er nu staat laten zien, maar volgens mij staan de belangrijkste onderdelen er nu wel.
Ik maak gebruik van VS2017 CE en ASP.NET4.6 en MVC4.
Kan iemand mij een duw in de juiste richting geven over hoe ik dit voor elkaar kan krijgen? Of kan een route niet zo diep gedefniëerd worden?
-EDIT-
Ik heb even een deploy gedaan hier
Als ik daar dan vervolgens handmatig de URL ingeef:
https://www.de-baay.nl//C...01%20-%20Minutemen.cbr/12 dan werkt de URL wel!
Het probleem zit hem dus echt in het opbouwen van de ActionLink.
De volledige code van de Web applicatie is hier te vinden:
https://github.com/scdeba...rsionTo4.6/ComicReaderWeb. Vergeef me voor nu nog even vreselijke fouten en lelijke code. Dit is een van de eerste projecten die ik helemaal zelf uit de grond stamp.
Ik heb daarvoor een ComicController geschreven en in de global.asax routes naar die controller gedefiniëerd.
Daarnaast heb ik een view pagina gemaakt die, bij het openen van een comic de mogelijkheid biedt om naar de volgende pagina te browsen.
Mijn Global Asax ziet er wat routing betreft zo uit:
C#:
1
2
3
4
5
| routes.MapRoute( "Comic", // Route name "{controller}/{action}/{folder}/{file}/{page}/{*size}", // URL with parameters new { controller = "Comic", action = "Read" , folder = UrlParameter.Optional, file = UrlParameter.Optional, page = UrlParameter.Optional, size =UrlParameter.Optional } // Parameter defaults ); |
Mijn controller bevat de volgende Action definitie:
C#:
1
2
3
4
5
6
| public ActionResult Read(string folder, string file, string page, string size) { Comic comic = new Comic(); <code om een comic pagina op te halen en in de viewbag te stoppen> ViewBag.ImageSource = config.ApiLocation + "?file=" + @comic.requestedfile + imageSourceParams; return View("Comic", comic); |
en mijn View bevat de volgende Html.ActionLink definitie:
C#:
1
2
3
| <div id="nextButton"> @Html.ActionLink("Next", "Read", "Comic", new { file = comic.requestedfile, page = comic.Next }, null) </div> |
Het vreemde is nu dat de href door de action link gerenderd wordt naar:
http://server/app/Comic/Read?file=<pad_naar_comic_bestand>/bestand.cbr&page=1
Dit werkt op zich, maar ik zou eigenlijk het liefst hebben dat de ActionLink gerenderd wordt naar
http://server/app/Comic/Read/<pad>/bestand.cbr/<page>
Ik krijg dit echter niet voor elkaar.
Ik heb pagina's aan documentatie doorgespit over de eigenschappen van ActionLink, maar ik kan geen manier vinden om de QueryString om te zetten naar een Routemapping.

Ik heb gevonden dat er verschillende manieren zijn om ActionLinks te definiëren in een view, maar ik krijg altijd de folder, file en page parameter als querystring gerenderd in plaats van als route.
Volgens mij heb ik wel op de juiste manier de route gedefiniëerd in de Global.Asax en ik weet nu niet meer wat ik verder nog kan proberen.
Als meer informatie nodig is, dan laat weten, ik kan meer code dan dit wat er nu staat laten zien, maar volgens mij staan de belangrijkste onderdelen er nu wel.
Ik maak gebruik van VS2017 CE en ASP.NET4.6 en MVC4.
Kan iemand mij een duw in de juiste richting geven over hoe ik dit voor elkaar kan krijgen? Of kan een route niet zo diep gedefniëerd worden?
-EDIT-
Ik heb even een deploy gedaan hier
Als ik daar dan vervolgens handmatig de URL ingeef:
https://www.de-baay.nl//C...01%20-%20Minutemen.cbr/12 dan werkt de URL wel!

Het probleem zit hem dus echt in het opbouwen van de ActionLink.

De volledige code van de Web applicatie is hier te vinden:
https://github.com/scdeba...rsionTo4.6/ComicReaderWeb. Vergeef me voor nu nog even vreselijke fouten en lelijke code. Dit is een van de eerste projecten die ik helemaal zelf uit de grond stamp.
[ Voor 10% gewijzigd door ElCondor op 28-12-2017 00:11 ]
Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)