Avatar billede angelenglen Nybegynder
28. februar 2013 - 15:33 Der er 9 kommentarer og
1 løsning

C# MVC4 applikation i undermappe, problem med root.

Hej Eksperten,

Jeg har en classic asp applikation der kører på et website (f.eks. www.mitsite.dk). På den applikation vil jeg gerne lave et administrations modul i .NET MVC 4 der ligger i undermappen "admin" på serveren.
Denne applikation skal ligge på:

www.mitsite.dk/admin
.

Dette giver mig en problemstilling mht. mvc's genereringer af url'er samt de url'er der bliver brugt i javascript filerne hvor Ajax kald bliver hyppigt brugt fordi mvc applikationen ikke lægger som root. 

Eks. hvis vi har følgende URL:

www.mitsite.dk/admin/Account/Login

Her har jeg en <img src="~/Images/somepicture.png" /> eller <img src="/Images/somepicture.png" /> men denne henviser mig til rodens imagemappe.

Er der nogen måde hvorpå at jeg kan snyde mvc til at tro at /admin/ er root mappen?

Alternativt skal jeg rette alle mine url'er til at sætte /admin/ foran men synes ikke at det er nogen køn løsning hvis man nu senere hen gerne vil ændre root til f.eks. "administration"

Så jeg søger egentlig en løsning på hvordan man håndtere Sub applikationer - lavet i MVC

Håber i kan hjælpe med lidt feedback på ovenstående problemstilling
Avatar billede Syska Mester
28. februar 2013 - 15:40 #1
Sæt din "Admin" mappe som en Application ( Tror jeg det hedder i IIS ), så vil "~" blive resolved til "/admin".

Problem løst.
Avatar billede angelenglen Nybegynder
28. februar 2013 - 16:25 #2
Det er allerede en applikation i IIS.
Avatar billede angelenglen Nybegynder
28. februar 2013 - 16:28 #3
JavaScript kan jo ikke henvise til ~/Images, for JavaScript ved jo ikke have ~ betyder.

Indtil nu er jeg nødt til at tilføje /admin/ foran url'er i JavaScript, jeg syntes bare ikke det er en god løsning.
...for hvad nu hvis jeg fx publisher min application til en anden mappe engang, fx /administration/ eller /backend/
...så ville jeg skulle finde og erstatte alle referencer til /admin/ i JavaScript koden, og det er noget upraktisk.
Avatar billede Syska Mester
28. februar 2013 - 16:59 #4
Det er også ret upraktisk at henvise til "/some/url" direkte i JS ... hvad nu hvis en anden person ændre ting?

Du bør udskrive din url's som data attributter de steder hvor de skal bruges.

Det synes jeg virker godt.

F.eks:

<input type="submit" data-action="@Url.Action("some-url")" value="Save" />

Så kan du jo fra js hente URL ud ... løser det problem for mig, så jeg kan have JS 100% sepereret fra html.

Du bør også kigge på T4MVC på codeplex/nuget.
Avatar billede angelenglen Nybegynder
29. maj 2013 - 14:39 #5
kom aldrig videre :-/
Avatar billede Syska Mester
29. maj 2013 - 14:49 #6
Så lidt ...
Avatar billede angelenglen Nybegynder
29. maj 2013 - 14:52 #7
Fik bare en lidt hård besked fra en anden bruger, der krævede at jeg lukkede spørgsmålet ned.
Så følge mig lidt presset til bare at få det lukket asap.

Det er ikke fordi jeg ikke værdsætter dit input.
Avatar billede Syska Mester
29. maj 2013 - 14:58 #8
Heheh ... :-)

Man kan ikke vinde hver dag ... men det er jo altid godt at huske at lukke sine åbne spm.

mvh
Avatar billede angelenglen Nybegynder
29. maj 2013 - 15:02 #9
Sandt, egentligt ville jeg hellere løse problemet før jeg lukkede, men det fik jeg så ikke lov til denne gang.
Avatar billede Syska Mester
29. maj 2013 - 16:36 #10
Men jeg kan nu ikke se hvordan det jeg skriver ikke løser dit problem.

mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester