Gå til innhold

Anbefalte innlegg

Har gjort det i php, og prøver nå å gjøre det samme i asp.net (!! .NET !!)

 

I php har jeg gjort noe som dette

<html>
<body>
<?php

if( $_GET['page'] == "index" )
include('home.php')
else if( $_GET['page'] == "login" )
include('login.php');

 

Jeg prøver da og lære meg litt asp.net (med c#). skal jeg legge koden i aspx eller aspx.cs for index.aspx siden? Og hva burde denne koden være?

Lenke til kommentar
Videoannonse
Annonse

Siden er lest, men jeg blir ikke noe klokere...

 

om url ser noe sånn ut: ../index.aspx?page=login

 

HVA og HVOR i koden gjør jeg tester? Jeg har følgende i min index side, i body:

 

<%
   if( Request.QueryString["page"] != null )
   {
       if (Request.QueryString["page"].Equals("login"))
           Response.Write("LOGIN PAGE");
   }
   else
       Response.Write("MAIN PAGE");
%>

 

Men jeg er stuck på hva jeg skal gjøre for å inkludere de riktige sidene.

Endret av South_Bridge
Lenke til kommentar

Etter litt leting, gjetting og resultater så har jeg kommet frem til noe. Men lurer på om dette er den beste måten å gjøre det på. Paste litt kode med forklaring nedenfor.

 

index.aspx ser slik ut:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="SITENAME.index" %>

<%@ Register TagPrefix="uc" TagName="login" Src="~/login.ascx" %>
<%@ Register TagPrefix="uc" TagName="main" Src="~/main.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
   <title></title>
</head>
<body>

<%
   login.Visible = false;
   main.Visible = false;

   if( Request.QueryString["page"] != null )
   {
       if (Request.QueryString["page"].Equals("login"))
           login.Visible = true;
   }
   else
       main.Visible = true;
%>
   <uc:login ID="login" runat="server" />
   <uc:main ID="main" runat="server" />

</body>

</html>

Jeg har da på forhånd lag 2 "Web User Controls", login og main. login.ascx ser slik ut:

 

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="login.ascx.cs" Inherits="SITENAME.login" %>

<div>

<%
   if (Request.Form["submitLoginForm"] != null)
   {
       if (Request.Form["brukernavn"].Equals("user1") && Request.Form["passord"].Equals("pass1"))
       {
           Response.Write("You have logged in!");
       }
   }    
%>

<table border="0" cellpadding="0" cellspacing="8" style="font-size: 12px;">
<tr>
   <td colspan="2"><h2 style="font-size: 1.2em; margin: 0; padding: 0; display: inline;">Login</h2></td>
</tr>
<tr>
   <td align="right" style="padding-right: 10px;">Brukernavn</td>                    
   <td><input name="brukernavn" type="text" /></td>
</tr>
<tr>
   <td align="right" style="padding-right: 10px;">Passord</td>
   <td><input name="passord" type="password" /></td>
</tr>
<tr>
   <td align="right" colspan="2"><input name="submitLoginForm" type="submit" value="SEND" /></td>
</tr>
</table>

</div>

 

Noen som har noen innvendinger? Er dette feil bruk av Web User Controls til det jeg prøver å oppnå (../index.aspx?page=XXX ).

Lenke til kommentar

Nei det er absolutt ikke en god måte å gjøre det på. Hvis du virkelig ønsker å gjøre noe som ligner på dette i ASP.NET så kan du se på Master Pages.

 

Ser ikke helt hvorfor du vil gjøre det på denne måten annet enn url-vanity. Men hvis du absolutt må, så kan du vel kjøre noe a'la denne flyten...

 

Lese QueryString

Åpne fila som QS peker til med en vanlig System.IO funksjon.

Spytt fila ut igjen med Response.Write

 

-C-

Lenke til kommentar
  • 4 uker senere...

Nå bruker jeg dog VB.NET når jeg skriver ASP.NET sider men ca. det samme vil det bli.

 

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<script runat="server">
Sub _OnLoad(sender as Object, e as System.EventArgs) Handles Me.Load
 Dim page As String = Request.QueryString("page")
 Select Case page.ToLower
  Case "login"
myContent.Controls.Add(LoadControl("./ControlFolder/Login.ascx"))
  Case Else
myContent.Controls.Add(LoadControl("./ControlFolder/Main.ascx"))
 End Select
End Sub
</script>
<head>
<title></title>
</head>
<body>
<div id="myContent" runat="server"></div>
</body>

</html>

 

Håper dette kunne hjelpe deg litt på vei ihvertfall:p

Lenke til kommentar
Nå bruker jeg dog VB.NET når jeg skriver ASP.NET sider men ca. det samme vil det bli.

 

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<script runat="server">
Sub _OnLoad(sender as Object, e as System.EventArgs) Handles Me.Load
 Dim page As String = Request.QueryString("page")
 Select Case page.ToLower
  Case "login"
myContent.Controls.Add(LoadControl("./ControlFolder/Login.ascx"))
  Case Else
myContent.Controls.Add(LoadControl("./ControlFolder/Main.ascx"))
 End Select
End Sub
</script>
<head>
<title></title>
</head>
<body>
<div id="myContent" runat="server"></div>
</body>

</html>

 

Håper dette kunne hjelpe deg litt på vei ihvertfall:p

 

Det var nettopp dette jeg ville ja... riktignok i VB men lar seg lett konvertere til et bedre språk, ;-) :-P

Lenke til kommentar
  • 6 måneder senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...