[ ASP.NET c# ] odbieranie wynikow formularza html

0

Witam. potrzebuje drobnej pomocy w pewnej kwesti. Sprawa wyglada tak:

W kodzie c# pisze funkcje, ktora mi generuje kontrolki htmlowe - konkretnie formularz. Generuje - poniewaz w momencie pisania tego kodu nie znam jeszcze postaci formularza.
Jest przycisk wyslij i tak dalej. kontrolki generuje z atrybutem runat = server.
i potrzebuje praowac na wynikach tego formularza. i tu jest problem. w momencie pisania kodu kontrolki te nie sa jeszcze widoczne, gdyz tworza sie dynamicznie.

w php bylo to latwe, poniewaz nie bylo kompilacji moglem w docelowym pliku.php odwolywac sie do zmiennych ktore wprawdzie jeszcze nie byly utworzone - ale wiedzialem ze beda i jak sie beda nazywac.
W asp nie napisze tego - znaczy moge napiac ale nie skompiluje sie program, no bo nie ma takiej zmiennej :/

i tu moje pytanie, jakim alternatywnym sposobem moge pracowac na wynikach formularza, ktory generuje dynamicznie ??
moze jest w asp mozliwosc pracowania na zmiennych ktore nie sa jezcze utworzone - bo np beda przeslane w adresie strony ??
z gory dziekuje za pomoc i pozdrawiam wszystkich programistow :)

0

i jeszcze jeden wazny problem - czemu jak generuje sobie w kodzie przycisk to po nacisnieciu otwiera mi sie ta sama strona generujac jeszcze raz taki sam przycisk, a klikniecie w ten drugi powoduje juz normalne prawidlowe przejscie do innej strony i wyslanie formularza :/
to jest jakis postback, tylko jak to ustawic z poziomu htmla :/

0

Czemu nie stworzysz dynamicznie normalnych ASPowych kontrolek i nie dodasz ich do strony? Generujac HTML wywazasz otwarte drzwi - to normalne kontrolki maja sie tym zajac.

Co do odbierania danych z formularza - Page.Request;

0

hm, no wlasnie nie wiem - nie umiem ;|

0

no tak, wlasciwie to masz racje. ale ja tego nie umiem robic, i zawsze wydawalo mi sie to jakies dziwne ;|
zreszta teraz juz nie ma sensu tego przerabiac, projekt musze zrobic na jutro wiec albo zrobie to albo w ogóle, bo jak zaczne od nowa to sie wzyciu nie wyrobie.

i w zwiazku z tym mam prozbe, jesli komus sie chce looknac na kod i powiedziec czemu klikniecie na buttona zamiast wyslac wyniki do wyniki.aspx i otworzyc ja, to otwiera jeszcze raz ta sama strone i powiela ten formularz. dopiero klikniecie w ten powielony formularz przesyla dane tak jak nalezy:

protected void Page_Load(object sender, EventArgs e)
    {
        XPathDocument xml = new XPathDocument("C:/Documents and Settings/szałas/Pulpit/WebSite1/XMLFile.xml");
        XPathNavigator nav = xml.CreateNavigator();
        XPathNodeIterator ni = nav.Select("ankieta/pytanie");

        int iloscPytan = ni.Count;
        string[] tablicaPytan = new string[iloscPytan];

        TextBox1.Text = iloscPytan.ToString();

        for (int i = 0; i < iloscPytan; i++)
        {
            ni = nav.Select("ankieta/pytanie[@id='pyt" + i + "']/trescPytania");
            while (ni.MoveNext())
            {
                tablicaPytan[i] += ni.Current.Value;
            }
        }


        //    if (pytania.InnerHtml == " ")
        //    {
        pytania.InnerHtml += "<form action='wyniki.aspx' method='GET'>";
        for (int i = 0; i < iloscPytan; i++)
        {
            ni = nav.Select("ankieta/pytanie[@id='pyt" + i + "']/mozliweOdpowiedzi/odpowiedz");
            int iloscOdpowiedzi = ni.Count;
            string[] tablicaOdpowiedzi = new string[iloscOdpowiedzi];

            pytania.InnerHtml += "<fieldset><legend>" + tablicaPytan[i] + "</legend><br>";

            for (int j = 0; j < iloscOdpowiedzi; j++)
            {
                ni = nav.Select("ankieta/pytanie[@id='pyt" + i + "']/mozliweOdpowiedzi/odpowiedz[@id='odp" + j + "']");
                while (ni.MoveNext())
                {
                    tablicaOdpowiedzi[j] += ni.Current.Value;
                }
                pytania.InnerHtml += "<input type='radio' name='odpowiedz" + i + "' value='tak' runat='server' id='" + i + "-" + j + "'>" + tablicaOdpowiedzi[j] + "<br>";
            }
            pytania.InnerHtml += "</fieldset>";
        }
        pytania.InnerHtml += "<input type='submit' value='Wyślij formularz' />";
        pytania.InnerHtml += "</form>";
        //   }
        
    }
0

Zobacz sobie w zrodlo wygenerowanej strony. Prawdopodobnie masz 2x form na stronie. Jedno z automatu ASP.net, drugie Twoje. Moze to Ci cos wyjasni :)

0

jest tak jak mowisz :)
co z tym mozna zrobic?

0

Nie dodawaj swojego form, skoro oba przenosza na ta sama strone. Pierwsze powinno zadzialac tak samo.

0

tak jest w istocie jak mowisz. Dziekuje.
Przy czym swojego nie moglem usunac bo jak usunalem moj form to sie sypalo, ale usunalem ten automatyczny i o dziwo dziala :D

a mam jeszcze jedno pyt - podobno w asp jest mozliwosc kontroli uzytkownikow tak aby 2 razy nie weszli na ta sama strone. wie ktos cos o tym? mozna by ip sprawdzac, ale to takie malo skuteczne chyba ;>

0

nie wiem - moze komus sie to przyda
string idkom = Request.AnonymousID;
trzeba tylko poprawic web.config i dziala

1 użytkowników online, w tym zalogowanych: 0, gości: 1