mboost-dp1

Lidt om ASP.NET


Gå til bund
Gravatar #1 - Tang
5. aug. 2008 10:36
Jeg skal til at skrive hovedopgave på min uddannelse (Datamatiker). Her skal jeg bruge ASP.NET. Men da jeg normalt bruger PHP til hjemesider, har jeg lige et par spørgsmål, som nogen måske kan hjælpe med...

Spørgsmål 1
I php bruger jeg ofte kode som denne. Men hvordan kan man lave noget lign. i asp.net?

<?
switch($_GET[page]
{
case "":
include("forside.php");
break;
case "noget":
include("noget_andet.htm");
break;
}
?>


Spørgsmål 2
Der udover, ville jeg også gerne vide hvordan man udskriver en slags "liste" med et simpelt loop...
Jeg kender godt fx <asp:GridView> og <asp:ListBox>, men jeg vil jo gerne kunne lave mit eget "layout". Er det svært?
Gravatar #2 - slemmebirk
5. aug. 2008 10:42
C# eller VB.NET?
Gravatar #3 - Jonasee
5. aug. 2008 10:47
Men hensyn til din liste, snakker vi så database udtræk eller array?
Gravatar #4 - Tang
5. aug. 2008 10:52
#2
Det er C#

#3
Det er udtræk fra en MS SQL Server-database...
Gravatar #5 - Mnc
5. aug. 2008 11:04
Måske irrelevant, men plejer man ikke, istedet for case "":, at bruge default?

switch($_GET[page])
{
case "forum" :
include("forum.php");
break;
default :
include("forside.php");
break;
}


Kan ikke lige huske løsningen, da det er meget længe siden jeg har rodet med asp.net, men der er nok andre der kan nå at give dig ms' include-variant, inden jeg når hjem fra arbejde.
Gravatar #6 - Jonasee
5. aug. 2008 11:05
Du kan lave en


whil(DataReader.read())
{
//kode
}


så vil den blive ved med at udskrive eller du kan, ved ikke om du kan brug det.



DataReader.read()

Array a = DataReader["column navn"]



det vil læse en hele column over i et array.

ellers prøv at tage fat i Acro, han virker til at vide en del om det
Gravatar #7 - Tang
5. aug. 2008 11:13
#6
Tak for svaret.
Men mit problem er nu ikke, hvordan man læser fra fra databasen. Det jeg gerne vil vide, er hvordan jeg undgår <asp:GridView> og <asp:ListBox>, når jeg vil udskrive resultaterne på siden. Jeg vil så at sige udskrive min egen html-kode, istedet for den som asp.net ellers ville generere.
Gravatar #8 - Jonasee
5. aug. 2008 11:30
du kunne vel lave det ved at ligge din data i <span> og give en en class også brug css til at formater det?

nu er det noget tid siden jeg sidste har haft fat på det, så det kan være jeg er gale på den
Gravatar #9 - Tang
5. aug. 2008 12:13
#8
Jow. Det er selvfølgelig selve formatteringen af html/css. Men det jeg vil vide er, hvordan jeg fra code-behind-filen udskriver ren html til siden...
Gravatar #10 - Jonasee
5. aug. 2008 12:27
Så vil jeg forslå at spørg acro eller arne_v
Gravatar #11 - gnаrfsan
5. aug. 2008 14:12
#9
Jeg vil anbefale at du vender dig til det indbyggede, hvis du skal arbejde med det i længden, for der er meget at vinde, men når det nu er sagt så noget i retning af:

Web.UI.HtmlControls.HtmlGenericControl displayDiv = new Web.UI.HtmlControls.HtmlGenericControl(@"DIV");
Form1.Controls.Add(displayDiv);
displayDiv.Attributes.Add(@"class", @"divstylecssclass");
displayDiv.InnerHtml = @"<b>hey hey heey</b>";
displayDiv.Style.Add(@"width", @"300px");

De kan self nestes i tabeller etc...

Der er self også muligheden for at add'e LiteralControls:
Form1.Controls.Add(new Web.UI.LiteralControl(@"<DIV>blah</DIV>"));
Her kan du smide hvad som helst i teksten.

Det her er nakket fra noget VB kode så der skal nok lige rettes lidt.
Gravatar #12 - arne_v
5. aug. 2008 14:22
#7

Jeg tror at du leder efter repeater.
Gravatar #13 - gnаrfsan
5. aug. 2008 14:24
Angående spørgsmål 1:
Du får filnavnet med:
IO.Path.GetFileName(Request.Path)

Men du skulle her istedet bruge UserControls, Iframes eller noget andet end includes.

Jeg ved faktisk ikke engang hvordan man includer.
Gravatar #14 - arne_v
5. aug. 2008 14:25
Eksempel fra lageret:

<%@ import namespace="System.Data" %>
<%@ import namespace="System.Data.SqlClient" %>
<html>
<head>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Server=ARNEPC3;Integrated Security=SSPI;Database=Test");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM T1", con);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
MyDataList.DataSource = rdr;
MyDataList.DataBind();
}
</script>
</head>
<body>
<form runat=server>
<table border>
<asp:Repeater id="MyDataList" runat="server">
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem,"F1") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"F2") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</form>
</body>
</html>
Gravatar #15 - gnаrfsan
5. aug. 2008 14:33
Lyt til Arne her.
Gravatar #16 - Cyrack
5. aug. 2008 14:34
Bortset fra at det let bliver uoverskueligt at have kode i as*x filerne så er arne_vs eksempel fint (CodeBehind er en nice feature til at adskille præsentation fra logik)
Gravatar #17 - arne_v
5. aug. 2008 14:44
#16

Jeg er helt enig i at den adskillelse er god.

Men som demo er det nemmest at "bundle".
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login