Avatar billede heloo Nybegynder
22. oktober 2004 - 13:57 Der er 19 kommentarer og
1 løsning

form submit fra codebehind fil

hvordan laver jeg en formsubmit fra min kode??
Avatar billede powernodes Nybegynder
22. oktober 2004 - 14:08 #1
Mener du en postback eller Response.Redirect?
Avatar billede heloo Nybegynder
22. oktober 2004 - 14:10 #2
Redirect hvor al inholdet af min form kommer med....
Avatar billede powernodes Nybegynder
22. oktober 2004 - 14:17 #3
Et par eksempler på begge. Ellers må du uddybe din problemstilling.

Post Back:

<script runat="server" language="c#">
  private void test__Click(object sender, System.EventArgs e) {
    Label1.Text = "<h1>Hello world</h1>";
  }
</script>


<asp:Label id="Label1" runat="server" /><br />
<asp:Button id="test" runat="server" Text="Klik mig" OnClick="test__Click" />


-----------------

Redirect:

<script runat="server" language="c#">
  private void test2__Click(object sender, System.EventArgs e) {
    string test = "Hidden1.Value";
    Response.Redirect("nyside.aspx?parameter="+test);
  }

</script>

<input type="hidden" value="bla" id="Hidden1" runat="server" /><br />
<asp:Button id="test2" runat="server" Text="Klik mig" OnClick="test2__Click" />
Avatar billede heloo Nybegynder
22. oktober 2004 - 14:26 #4
det er ikke lige det jeg mangler....
det jeg mangler er en form submit fra codebehind...
Avatar billede powernodes Nybegynder
22. oktober 2004 - 14:30 #5
Hvad er forskellen? Hiv det ud af script tags og ind i en cs fil:

namespace bla {

  public class blabla : System.Web.UI.Page {

    private void test2__Click(object sender, System.EventArgs e) {
      string test = "Hidden1.Value";
      Response.Redirect("nyside.aspx?parameter="+test);
    }


  }

}

=oD
Avatar billede heloo Nybegynder
22. oktober 2004 - 14:37 #6
problemet er at parametrene er dynamiske, så jeg vil gerne bare have alt der er på formen med over...
Avatar billede powernodes Nybegynder
22. oktober 2004 - 14:40 #7
Så giv et eksempel på en form value du vil have med.
Avatar billede snepnet Nybegynder
22. oktober 2004 - 17:29 #8
hej heloo... du henviste mig hertil, men jeg kan se at der er kommet folk på banen herinde :o)

... men bortset fra det er jeg da egentlig meget usikker på hvad det er du spørger om ?!?!

et form submit er i min terminologi noget der sker ude hos klienten, og det virker lidt mystisk at snakke om hvordan man gør det i sin serverside kode ("det jeg mangler er en form submit fra codebehind").
det er af naturlige årsager ikke muligt at gøre direkte - da du udelukkende har ramt din serverside kode fordi formen allerede er blevet submittet.

du kan dog godt - fra din serverside kode - sende et script med ud, der sørger for at formen submittes når den bliver vist uden brugeren har gjort noget, men det giver jo heller ikke rigtig nogen mening.

kan du ikke prøve at se om du kan lave en lidt mere præcis formulering af det du gerne vil opnå, så tror jeg vi har lidt bedre muligheder for at foreslå en løsning, for der må være et eller andet sted her der er opstået en misforståelse.

håber vi kan finde ud af noget. jeg skal nok holde øje med spørgsmålet, og jeg er sikker på at powernodes sidder klar også, men prøv lige at se om du ikke kan hjælpe os lidt mere på vej.

håber livet er godt - vi skrives ved.
mvh
Avatar billede heloo Nybegynder
22. oktober 2004 - 17:46 #9
undskyld begge to (jeg er en skovl til at beskrive min problemstilling)...jeg tror *g*, det jeg gerne vil er: i min buttonclick metode finde de textboxe og labels (controls) som er på min form og sende inholdet af dem med over til en anden side...
problemet er at ikke ved hvilke der findes da de bliver genereret dynamisk...håber i forstår..
Avatar billede snepnet Nybegynder
22. oktober 2004 - 17:50 #10
ah... jeg tror det går fremad nu :o)

hvis det er din komplette form du vil sende med til en anden side kan du gøre det med den metode der hedder
Server.Transfer(side.aspx);
(det skal være en aspx-form på samme site du henviser til)

var det sådan en du var ude efter ?

mvh
Avatar billede snepnet Nybegynder
22. oktober 2004 - 17:54 #11
du har andre alternativer....

du kan løbe din kontroltræ igennem og snuppe de værdier du skal bruge og opbygge en querystring udfra dem, eller du kan gemme det du vil (mest nærliggende i et sessionobjekt).

gennemløbet af kontroltræet kan du principielt gøre sådan her :

foreach(Control c in someControlContainer)
{
  if(c is TextBox)
    // gør noget
  else if(c is Label)
    // gør noget andet
}

someControlContainer kunne så passende være din serverside form, eller måske et Panel eller lignende du har smidt de kontroller du vil kigge på ind i.

var det sort - eller giver det en smule mening ?

mvh
Avatar billede heloo Nybegynder
22. oktober 2004 - 17:58 #12
det giver total mening, jeg vil lege lidt med det senere så vender jeg lige tilbage....under alle omstændigheder: ja livet er 'rigtig' godt ;-) og go' weekend til jer begge...
Avatar billede snepnet Nybegynder
22. oktober 2004 - 17:59 #13
og i lige måde til dig heloo - og held og lykke med det :o)
mvh - vi ses
Avatar billede heloo Nybegynder
22. oktober 2004 - 18:00 #14
jeg tror at det er Server.Transfer jeg leder efter...
Avatar billede snepnet Nybegynder
22. oktober 2004 - 18:01 #15
det tror jeg også ;o)
du siger bare til hvis du får bøvl med den.
mvh
Avatar billede snepnet Nybegynder
22. oktober 2004 - 18:42 #16
hvis du lige vil have et lille eksempel på hvordan du kan udnytte det på en lidt labet (og typestærk) måde kan du lige kigge her :

(lille setup med en From.aspx og en To.aspx)

// først From.aspx :
<%@ Page language="c#" Codebehind="From.aspx.cs" AutoEventWireup="false" Inherits="EXP2.Transfer.From" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>From</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
        </form>
    </body>
</HTML>

// og en code-behind
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace EXP2.Transfer
{
    public class From : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button Button1;
        protected HtmlForm Form1;

        public HtmlForm TheServerForm
        {
            get{return Form1;}
        }

        private void Page_Load(object sender, System.EventArgs e)
        {
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }

        private void InitializeComponent()
        {   
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }

        private void Button1_Click(object sender, System.EventArgs e)
        {
            Server.Transfer("To.aspx");
        }
    }
}

Altså bare en form med en knap der serverside laver en Server.Transfer til To.aspx.
(bemærk at jeg har lagt en public property der giver adgang til formen !)

På To.aspx har jeg ikke lavet noget aspx-kode, men du kan lige se dette lille trick :
// i page_load i code-behin til To-formen :

private void Page_Load(object sender, System.EventArgs e)
{
  From frompage = Context.Handler as From;
  if(frompage != null)
  {
    // se det betyder jo så, at der er blevet lavet en transfer fra From.aspx,
    // og du kan så få direkte adgang til formen via den property jeg nævnte.
    HtmlForm form = frompage.TheServerForm;

    // her kan du så kigge formen igennem, og gøre hvad du vil.
  }
}

Er det noget du kan bruge til noget heloo ?

mvh
Avatar billede heloo Nybegynder
23. oktober 2004 - 00:36 #17
det spiller totalt....

siden som modtager (i pageload):

System.Collections.Specialized.NameValueCollection colForm;
colForm = Request.Form;
//hent hvad man vil her ;-)

man skal lige huske at sætte:
EnableViewStateMac="false"
på begge sider!!!!

snepnet> smid et svar her: http://www.eksperten.dk/spm/553513
powernodes> send bare et svar, så får du de 15 points, håber at det er iorden?
Avatar billede heloo Nybegynder
26. oktober 2004 - 13:21 #18
sender du lige et svar powernodes......
Avatar billede powernodes Nybegynder
26. oktober 2004 - 14:36 #19
Ahh ja. Sorry :=)
Avatar billede heloo Nybegynder
26. oktober 2004 - 14:48 #20
tak for det ;-) vi ses
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