Avatar billede melange Nybegynder
29. april 2003 - 15:06 Der er 3 kommentarer og
1 løsning

Simple Scripts

Jeg har flere gange prøvet mig at lære ASP.NET. Nogle gange er det gået bedre end andre, og nu gør jeg så et nyt forsøg :)

Jeg har prøvet at tænke tilbage på hvordan jeg gjorde dengang jeg ville lære PHP, Perl eller JavaScript, og jeg kommet frem til at noget jeg virkelig mangler er nogle færdige ASP.NET scripts at kigge på, så jeg kan se hvordan andre folk arbejder, og bygger deres sider op.

Har søgt lidt på nettet, men aldrig fundet noget ordenligt. Enten er det skrevet til Beta2, ellers et der kæmpe scripts som er alt for advancerede til mig, eller også er de skrevet i VB.NET, og jeg vil have noget i C#.

Jeg ville nu høre om der er nogle af jer som har/kan_lave små simple scripts som gæstebøger, loginformularer eller måske et meget simpelt forum (alt i C#) som jeg kan få lov til at se, og rode lidt med, og se hvordan man typisk bygger det op.

Jeg ver godt der er mange eksempler i QuickStart tutorialet, men jeg kunne godt tænke mig at se noget som er skrevet for at blive brugt i praktis (hvis i forstår).
Avatar billede odegaard Nybegynder
29. april 2003 - 15:49 #1
Her en en gæstebok som også sender dig en email når den kommer frem. Der er i fuld funktion på www.iter.dk.
Den demonstrerer både brug af databinding, email og database.
---------------guestbook.aspx----------------
<%@ Page debug="true" Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Web.Mail" %>
<%@ Register TagPrefix="iter" TagName="Header" src='controls/header.ascx' %>
<%@ Register TagPrefix="iter" TagName="Footer" src='controls/footer.ascx' %>

<script runat="server" >
string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnStr"];

void Page_Load(Object sender, EventArgs e) {
  if(!Page.IsPostBack) {
    phAddMessage.Visible=false;
    repTags.Visible=true;
    DataBind();
  }
  else {
    phAddMessage.Visible=true;
  }
}

void ShowAddMessage(Object sender, EventArgs e) {
    repTags.Visible=false;
    phAddMessage.Visible=true;
}

void AddMessage(Object sender, EventArgs e) {
    string strSQL = "INSERT INTO Guestboog (Name, Email, [Date], Body) VALUES (" +
        "'" + tbName.Text.Replace("'","''") + "'," +
        "'" + tbEmail.Text.Replace("'","''") + "'," +
        "Now()," +
        "'" + tbMessage.Text.Replace("'","''") + "')";

    OleDbConnection SQLCon = new OleDbConnection(ConnStr);

    SQLCon.Open();
    OleDbCommand objCmd = new OleDbCommand(strSQL, SQLCon);
    objCmd.ExecuteNonQuery();
    SQLCon.Close();
    SendEmail();
    Response.Redirect("guestbook.aspx");
}

void DataBind() {
    OleDbConnection SQLCon = new OleDbConnection(ConnStr);
        DataSet ds = new DataSet();
    string strSQL = "Select * FROM Guestbook ORDER BY Date DESC";
    SQLCon.Open();
    OleDbDataAdapter objDataCmd = new OleDbDataAdapter(strSQL, SQLCon);

        objDataCmd.Fill(ds);
    SQLCon.Close();

    repTags.DataSource = ds;
    repTags.DataBind();
}

void SendEmail() {
    MailMessage mail = new MailMessage();
    mail.From = tbEmail.Text;
    mail.To = "send@to.dk";
    mail.Subject = "Guestbook signed";
    string body;
    mail.Body = "Name: " + tbName.Text + " (" + tbEmail.Text + ")\n" + "Message: " + tbMessage.Text;
    mail.BodyFormat = MailFormat.Text;
    SmtpMail.SmtpServer = "Localhost";
    SmtpMail.Send(mail);
}

</script>

<html><body>
<form runat="server" id="TheForm">
<asp:Placeholder id="phAddMessage" runat="server">
    <table>
    <tr><td>Name:</td><td><asp:TextBox id="tbName" maxlength="50" runat="Server"/>
        <asp:RequiredFieldValidator ControlToValidate="tbName" ErrorMessage="Please enter a name" runat="server"/>
    </td></tr>
    <tr><td>Email:</td><td><asp:TextBox id="tbEmail" maxlength="50" runat="Server"/></td></tr>
    <tr><td valign="top"><br/>Message:</td><td valign="top">
        <asp:RequiredFieldValidator ControlToValidate="tbMessage" ErrorMessage="Please enter a message" runat="server"/><br/>
        <asp:TextBox textmode="Multiline" cols="50" rows="10" id="tbMessage" runat="Server"/>
    </td></tr>
    <tr><td colspan="2" align="right">
        <table width="75px"><tr><td><div class="htmlbutton">
            <asp:LinkButton OnClick="AddMessage" runat="server" text="Submit"/>
        </div></td></tr></table>
    </td><td/></tr>
    </table>
</asp:PlaceHolder>


<asp:Repeater id="repTags" runat="server" EnableViewState="False">
    <HeaderTemplate>
        Every personal homepage gotta have one, so here it is!<br/>
        <div class="headline">The Guestbook</div>
        <b>Feel free to add a message.</b><br/><br/>
        <table width="100px"><tr><td><div class="htmlbutton">
            <asp:LinkButton OnClick="ShowAddMessage" CausesValidation="False" runat="server" text="Add message"/>
        </div></td></tr></table>
        <table width="400px" cellspacing="0px">
        <tr><td colspan="2"><hr/></td></tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr><td valign="top" width="75px"><b>From:</b></td><td><%# DataBinder.Eval(Container.DataItem, "Name") %></td></tr>
        <tr><td valign="top"><b>Date:</b></td><td><%# (DataBinder.Eval(Container.DataItem, "Date")) %></td></tr>
        <tr><td valign="top"><b>Message:</b></td><td style="border-width: 1px; border-style: solid; border-color: #738c9c;"><%# DataBinder.Eval(Container.DataItem, "Body").ToString().Replace("\n","<br/>") %></td></tr>
        <tr><td colspan="2"><hr/></td></tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
        <table width="100px"><tr><td><div class="htmlbutton">
            <asp:LinkButton OnClick="ShowAddMessage" CausesValidation="False" runat="server" text="Add message"/>
        </div></td></tr></table>
    </FooterTemplate>
</asp:Repeater>

</form>

</body></html>
Avatar billede odegaard Nybegynder
29. april 2003 - 15:54 #2
nå ja, så demonstrerer den forresten også validering af inputfelter, så vi efterhånden har været igennem de fleste fede ting i ASP.NET :-)
Husk at rette send@to.dk til den adresse email'en skal sendes til.
De to <register> linjer i toppen kan du forresten også fjerne. Det er nogle usercontrols der er specifikke for mit layout.
Avatar billede melange Nybegynder
29. april 2003 - 16:46 #3
odegaard << ,ange tak, det var lige hvad ledte efter, og så er niveauet også så at jeg kan forstå det uden at slå alt for meget op :)

men nu er jeg jo lidt nysgerrig. Er det muligt at få lov til at se hvad 'controls/header.ascx' og 'controls/footer.ascx' indeholder ?

Hvis indholdet er meget langt, og ikke egner sig til at blive lagt her på eksperten, har jeg lavet et lille script hvor det kan pastes ind i.
http://paste.bottiger.com/


tabellen i databasen som du bruger i scriptet går jeg ud fra er en ganske normal standart tabel som ser ud noget i den her retning (kan sikkert optimere den ved at vælge mere velegnede felt-typer, men det er ikke væsentligt):

CREATE TABLE Guestboog(
id int( 11 ) NOT NULL auto_increment,
Name tinytext NOT NULL ,
Email tinytext NOT NULL ,
Date tinytext NOT NULL ,
Body longtext NOT NULL ,
PRIMARY KEY ( id )
) TYPE = MyISAM

men under alle omstændigheder.
mange tak!
Avatar billede odegaard Nybegynder
29. april 2003 - 21:13 #4
UserControlsene indeholder blot toppen og bunden af html-koden som skal genbruges på samtlige sider.
Din tabel-definition ser ok ud, men Date er en dato-type. Forresten skal du nok også lige ændre ConnStr til din connectionstring men det har du nok regnet ud.
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