Avatar billede tanzaweb Nybegynder
09. marts 2004 - 12:48 Der er 15 kommentarer og
1 løsning

C# med page_load

Hej

Jeg er rimlig ny til ASP.NET C# og har følgende spørgsmål:

Jeg har 2 sider hvor jeg begge steder includer en fil der hedder head.aspx heri er der en void Page_Load, og nor jeg køre den på eks. side køre den igennem, men når jeg kør eden igennem på side 2 hvor jeg også har en void Page_load så kommer den selvfølgelig op med en fejl om at der allerede eksistere en void Page_Load.

Er der andre måder man kan lave den en som skal loade på alle sider gøre det uden at komme i kambolage med dem som er på de andre sider?

Mads
Avatar billede burningice Nybegynder
09. marts 2004 - 12:52 #1
1) hvordan includer du?
2) overvej at lav din head.aspx om til head.ascx
Avatar billede thor.ostergaard Nybegynder
09. marts 2004 - 12:53 #2
Avatar billede tanzaweb Nybegynder
09. marts 2004 - 13:06 #3
Jeg includer den som det ses på denne udskrift:
i head.aspx ligger der så også en void Page_load

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<% string title;
    title="Nyheder fra ABCD A/S";
%>
<script runat="server">
   
    void Page_Load(object Sender, EventArgs E)
    {
   
    string strConnection;
            string strSQL;
            OleDbConnection objConnection;
            OleDbCommand objCommand;
            strConnection =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Inetpub\wwwroot\eHandel\abcd.mdb";
            objConnection = new OleDbConnection(strConnection);
            objConnection.Open();
            strSQL = "SELECT * FROM nyhed ORDER BY nyhedDato";
            objCommand = new OleDbCommand(strSQL, objConnection);
            dgData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
            dgData.DataBind();
           
            objConnection.Close();
   
    }   
   

</script>


<!-- #INCLUDE FILE="head.aspx" -->


<asp:datagrid ID="dgData" runat="server" AlternatingItemStyle-BackColor="#CCCCCC" BorderWidth="0" CellPadding="3" CellSpacing="0" Font-Name="Arial" Font-Size="12" HeaderStyle-ForeColor="#993333" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="13" AutoGenerateColumns="false">
<columns>
    <asp:boundcolumn DataField="nyhedOverskrift" HeaderText="Overskrift"/>
</columns>
</asp:datagrid>




<!-- #INCLUDE FILE="footer.aspx" -->
Avatar billede dgivoni Nybegynder
09. marts 2004 - 13:21 #4
Du kan ikke inkludere andre aspx-filer paa den maade.

Som det allerede er naevnt boer du bruger user-kontroller i stedet for.
Det svarer lidt til de gamle asp-include filer, men indsaettes i stedet for som et tag, der hvor du oensker at inkludere filen.

Du opretter en user-kontrol, som har filtypen .ascx
I den side som inkluderer kontrollen, indsaetter du for oven en reference:
<%@ Register TagPrefix="minKontrol" TagName="head" Src="head.ascx" %>

og laengere nede, hvor du oensker at vise kontrollen skriver du:

<minKontrol:head runat="server">

Det er faktisk rimelig simpelt. Lad hoere om det virker for dig.
Avatar billede burningice Nybegynder
09. marts 2004 - 13:48 #5
<!-- #INCLUDE FILE="footer.aspx" --> er slet ikke asp.net, men SSI... det bliver udført FØR asp.net, så derfor bliver koden fårked-up når asp.net endelig skal til at kompile koden, netop på grund af flere metoder der hedder det samme
Avatar billede tanzaweb Nybegynder
09. marts 2004 - 14:06 #6
Nu ser min index.aspx således ud:

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<%@ Register TagPrefix="minKontrol" TagName="head" Src="head.ascx" %>
<%@ Register TagPrefix="minKontrol" TagName="footer" Src="footer.ascx" %>
<% string title;
    title="Absolute Baby Clothing Denmark"; %>



<minKontrol:head runat="server">

        <table width="100%">
            <tr>
                <td width="65%" class="mainFont">
                Absolute Baby Clothing Denmark tilbyder på disse sider dig mulighed for at købe vores
                produkter og find oplysninger om os selv og interessante emner om børn og
                forældre.<br />
                <br />
                Vi ønsker at give familier mulighed for at foretage tøjkøb til familiens yngste uden
                stress og jag.<br />
                <br />
                Hvis du har lyst til at få gode tilbud på babytøj og lækkert babyudstyr en gang om
                måneden, kan du tilmelde dig Absolute Baby Clothing Denmark's Nyhedsbrev nederst på
                skærmen. Du forpligter dig ikke til noget, og det er gratis.
                </td>
                <td width="35%" align="center" class="mainFontMini">
                Se tøjet i tøj-shoppen, og køb det online.<br />
                <img src="images/katalog.jpg" alt="ABCD A/S 2004 børne/baby tøj katalog"><br />
                Eller bestil vores seneste katalog <a href="bestilKatalog.aspx">her.</a>
                </td>
            </tr>
            <tr>
                <td class="mainFont"></td>
                <td class="mainFont"></td>
            </tr>
        </table>
       

<minKontrol:footer runat="server">

og jeg får følgende fejl:
Unexpected end of file looking for </form> tag.

</form> ligger i Footer.ascx filen men den ser ikke ud til at kunne finde den?
Avatar billede thor.ostergaard Nybegynder
09. marts 2004 - 14:12 #7
Der må ikke være nogle form tags i dine ascx filer - det skal være i din aspx fil
Avatar billede dgivoni Nybegynder
09. marts 2004 - 14:12 #8
saa vidt jeg ved er du noedt til at have form-taggene i selve hovedsiden. Kan du ikke flytte dem fra kontrollerne?
Avatar billede tanzaweb Nybegynder
09. marts 2004 - 14:17 #9
hvad så med <title><% Response.Write(title); %></title>
som jeg deklarer i index.aspx må man heler ikke have det i ascx filer?
Avatar billede tanzaweb Nybegynder
09. marts 2004 - 14:17 #10
her får jeg nemlig fejl nu Name 'title' is not declared.
Avatar billede thor.ostergaard Nybegynder
09. marts 2004 - 14:46 #11
rigtigt - en ascx fil skal være ren for den slags
Avatar billede tanzaweb Nybegynder
09. marts 2004 - 15:05 #12
men hvad så når man vil have noget script ind og der er to scripts der begge skal loades ved en bestemt side. som denne hvis der flere der skal bruges er det så også noget med at tage den ind fra en extern kilde ved en funktion eller?
Jeg har jo flere på nogle sider som skal bruges

Jeg har sikkert ikke forstået det helt korekt de svar der er kmmet indtil nu?

<script runat="server">
   
    void Page_Load(object Sender, EventArgs E)
    {
   
    string strConnection;
            string strSQL;
            OleDbConnection objConnection;
            OleDbCommand objCommand;
            strConnection =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Inetpub\wwwroot\eHandel\abcd.mdb";
            objConnection = new OleDbConnection(strConnection);
            objConnection.Open();
            strSQL = "SELECT * FROM nyhed ORDER BY nyhedDato";
            objCommand = new OleDbCommand(strSQL, objConnection);
            dgData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
            dgData.DataBind();
           
            objConnection.Close();
   
    }   
   

</script>
Avatar billede dgivoni Nybegynder
09. marts 2004 - 15:14 #13
Jo, det er ok. Baade .aspx og ascx-filer kan have en Page_Load-metode defineret.
Avatar billede burningice Nybegynder
10. marts 2004 - 10:13 #14
tanzaweb>> du kan overføre variabler fra din index.aspx til dine kontroller på denne måde:

<minKontrol:head title="et eller andet" runat="server">
Avatar billede tanzaweb Nybegynder
10. marts 2004 - 10:55 #15
har selv fundet løsningen på asp.net
Avatar billede burningice Nybegynder
10. marts 2004 - 11:04 #16
... erm... tak ?!
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