Avatar billede jkampmann Nybegynder
16. december 2007 - 12:21 Der er 10 kommentarer og
1 løsning

ASP.NET include og URL rewrite

Hejsa.
Jeg plejer i PHP, at lave en htaccess fil, som f.eks laver:

index.php?page=nyheder&page2=23&page3=slet
til
./nyheder/23/slet/

I min php-index fil, laver jeg så et tjek om filen eksisterer, også læser jeg indeholdet af filen (som i dette eksempel så er nyheder.php):

include("nyheder.php");

Hvordan gøres dette nemmest i ASP.NET (2) ?
Avatar billede coderdk Praktikant
16. december 2007 - 13:44 #1
Avatar billede jkampmann Nybegynder
16. december 2007 - 14:32 #2
1000 tak :) Hvordan fungerer include-funktionen i ASP.NET hvis der overhovedet eksisterer sådan en?
Avatar billede keysersoze Guru
16. december 2007 - 16:04 #3
det hedder MasterPage i .NET
Avatar billede thesurfer Nybegynder
16. december 2007 - 17:56 #4
Man kan bruge ganske almindelige serverside kode:

<!-- #include file="filnavn.aspx" -->

Eller ASP.NET's egne funktioner:

Server.Execute

Server.Transfer

Der er forskel på de to, men kan ikke helt huske hvad..

MasterPage er endnu en mulighed..
Avatar billede jkampmann Nybegynder
16. december 2007 - 20:19 #5
Hej igen.
Kan man så lave noget smart med

if ( siden eksisterer )
{
    <!-- #include file="" & siden & ".aspx" -->
} else {
    <!-- #include file="startside.aspx" -->
}

- eller er jeg helt galt på den?

Så skal siden "nyheder.aspx" eksempelvis og "startside.aspx" vel ikke indeholde <head>, <body> osv - men kun ren funktionalitet, hvis det skal indbygges i index-designet? (Defualt.aspx) ?
Avatar billede keysersoze Guru
16. december 2007 - 20:31 #6
det vil være usmart ikke at benytte de kontroller i .NET der findes til disse formål - i dit tilfælde altså en MasterPage. Hvis en side ikke findes kan du i din web.config sætte op hvad der mere skal ske.
Avatar billede thesurfer Nybegynder
16. december 2007 - 21:01 #7
I SSI (Server Side Include) som "#include" er, kan man ikke lave dynamiske includes..
Hvis man skulle lave det i ASP (eller ASP.NET), kunne man bruge Server.Execute eller Server.Transfer..

Alternativt kunne man bruge en Switch-Case

eksempel:
<%
side = Request.Querystring["page"];
if (side == null)
{
    // der står ikke noget "page=..." i urlen, så der loades en standard side
    // måske skal der ske noget ekstra, da det typisk vil være første load af siden ?
    %>
    <!-- #include file="standard.aspx" -->
    <%
} else {
    // der står noget i "page" parameteren, så vi skal lige finde ud af hvad det er..

    switch (side)
    {
        case "nyheder":
            %>
            <!-- #include file="nyheder.aspx" -->
            <%
            break;
       
        case "kontakt":
            %>
            <!-- #include file="kontakt.aspx" -->
            <%
            break;
       
        default:
            // hvis man indtaster "sdofhsdffghrkæjh" i "page", henter den standard siden
            %>
            <!-- #include file="standard.aspx" -->
            <%
            break;
    } // slut SWTICH

} // slut IF
%>

Det er sådan man typisk vil gøre det i ASP (også kaldet ASP Classic).


Den officielle ASP.NET fremgangsmåde, er nok at bruge en MasterPage (forkortelse "MP"), selv om andre måder også kan bruges..

Hvis man skal sammenligne MP med noget fra ASP/PHP, vil MP svare til hovedsiden, dvs. "index.asp".

Hovedsiden, som typisk vil indeholde en menu eller ligende, vil så loade undersiderne, f.eks. via include (SSI eller PHP) eller Server.Execute/Transfer..

Det gode ved MP i ASP.NET er, at hver side kan tilkoble sig en MP og arve f.eks. CSS.

Undersiderne (f.eks. nyheder.aspx, kontakt.aspx osv) kommer ind i et "content" område.. svarende til:

<html>
<head>
<title>hoved siden, aka en MasterPage-ligende side</title>
<link rel="stylesheet" type="text/css" href="global_stylesheet.css">
<script type="text/JavaScript" src="global_javasript.js"></script>
</head>
<body>
Dette er MasterPage og

----
her er CONTENT område, aka inkluderingen af undersiderne sker i dette område
---

og her er bunden af siden
</body>
</html>

Så sker der simpelthen en automatisk smeltning af både MP og undersiden
Avatar billede thesurfer Nybegynder
16. december 2007 - 21:02 #8
Og: Jeg mener også at man helst skal bruge de controls/kontroller der findes i frameworket.. Hvis man mener at de eksisterende controls/kontroller ikke er tilfredsstillende, kan man naturligvis benytte sin egen kode.. :-)
Avatar billede jkampmann Nybegynder
17. december 2007 - 09:37 #9
1000 tak! Smid svar! Det ku' jeg sQ bruge..! ;oD
Avatar billede karl-koder Nybegynder
17. december 2007 - 11:23 #10
En anden løsning er jo at benytte web user control's til det.

default.aspx
- kontakt.ascx
- nyheder.ascx

Disse control's loades så ved hjælp af f.eks. en placeholder der ligger placeret på default.aspx siden.
Avatar billede thesurfer Nybegynder
17. december 2007 - 15:50 #11
jkampmann> Jeg går ud fra, at det var mig der skulle smide et svar.. :-)
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