» »

[ ASP.NET ] Vprašanje glede podajanja parametrov

[ ASP.NET ] Vprašanje glede podajanja parametrov

moowy123 ::

Živjo,

imam eno vprašanje glede podajanja parametrov, pri prehajanju med stranmi. Pri prehodu iz ene strani na drugo hočem podati 2 parametra zraven in sicer list (System.Collections.Generic.List) in eno boolean spremenljivko. Kako bi to najlažje dosegel ? Razmišljal sem da bi uporabljal Response.redirect sam potem ne vem kako bi podal list notri ... Obstaja tudi možnost da bi list shranil notri kot session spremenljivko, vendar mi ta način ni najbolj všeč...

Kaj mi vi predlagate ??

mHook ::

Redirect ni primeren za prenos večje količine podatkov med stranmi.

Najbolj primerna oblika je Sesion ali pa Form (POST method).

Zakaj ti pa session ni všeč?
Session je dober način za shranjevanje podatkov znotraj seje in je isti med stranmi. Poleg tega ti nekdo ne more enostavno vsiliti tretje vsebine (cross-site-scripting in podobno).

Tretja opcija je, da si shraniš vsebino objektov v bazo (datoteko,...) in preko redirect-a posreduješ ID shranjene vsebine.

moowy123 ::

Stvar sem potem rešil kar s Session saj se mi je ravno zaradi tega kar si napisal prikupil :) . Hvala za pomoč

darkolord ::

S cross-page postingom lahko to tudi narediš - dostopaš lahko do objektov iz prejšnje strani

Beezgetz ::

Živijo,

jaz sem začetnik, in imam podoben primer.

Uporabljam Visual Web Developer Express za izdelavo svoje web strani, kodo pa pišem z C#-om.
Na strani 'kao' kalkuliram , pa za shranjevanje teh podatkov uporabljam Class in struct.

Problem je seveda v tem, da si ne zapomne prejšnje vnose, ampak operira samo z zadnjim vnosom. Pa sem razmišljal, da bi bilo dobro ta problem rešit, toda kako?

Sem brskal po forumih, in sem zvedel, da podatke mad stranmi lahko podajam z bazo, Viewstate, Session, in še kaj, toda nikakor mi še ni uspelo napisat kode...

Class in struct ustvarim na začetku;

//*****Class
ClassGrid Grid = new ClassGrid();
//**___konec_Class

//****struct
private struct Bremena
{
public string imeBr;
public double tezaBr;
public double distancaX;
public double distancaY;
}


(ko sem hotel poslat, sem dobil opozorilo: "Uporabili ste neveljavno / nedovoljeno HTML oznako:", in sicer za znak večje in za zznak manjše, pa ju bom zbrisal, im uporabil črko č
ListčBremenač SeznamBremen = new ListčBremenač();
Bremena VnosBremen = new Bremena();
//**__konec_struct

Ne vem, kako naj prenašam te podatke med stranmi. Prosil bi, če mi kdo zna pomagat s kodo. Kako shranim s Sessnom, recimo, in kako pridem do teh podatkov nazaj?

Najlepša hvala,

Beezgetz

salesky ::

session["imeSpremenljivke"] = ....;

imeSpremenljivke ni potrebno prej deklarirat.

Backup22 ::

Če delaš s cross-pageom, se ti value vidi v URLju in jo user lahko tudi "spremeni". Daj to v session:
1.) na prvi strani
       Session.Add("blabla", objekt ki ga daš v session);
       Response.Redirect("drugaStran.aspx");
2.) na drugi strani
       Razerd rd = (Razred)Session["blabla"];
       in izpišeš ga lahko s StringBuilderjem


Good luck
//

darkolord ::

> Če delaš s cross-pageom, se ti value vidi v URLju in jo user lahko tudi "spremeni".

Nope, vse narediš v code-behindu (nobena vrednost se ne pošlje prek GET parametrov) 8-)

TextBox SourceTextBox = (TextBox)Page.PreviousPage.FindControl("TextBox1");

Backup22 ::

Oh, my bad :)
//

Beezgetz ::

huh, rapidnost pa taka! Hvala!!!

Najprej Sale,
"session["imeSpremenljivke"] = ....;
imeSpremenljivke ni potrebno prej deklarirat."

A so spremenjlivke Class in struct? (če prav razumem).
Deklarirati pomeni to, kar sem poslal za kodo? To kar imam napisano na začetku kode (to kodo ki sem poslal)?

Kje pol deklariram ? V loadPage-ju?
protected void Page_Load(object sender, EventArgs e)
{
session[ClassGrid Grid = new ClassGrid()];//sam to ne dela
//kako pa deklariram strukturo?
}
//private struct Bremena
//{
// public string imeBr;
//public double tezaBr;
//public double distancaX;
//public double distancaY;
//}

//ListčBremenač SeznamBremen = new ListčBremenač();
//Bremena VnosBremen = new Bremena();
*******************************************************


Backup22,
aha, se mi zdi, da sem se slabo izrazil. jaz ostajam na isti strani (url naj je isti (če se ne motim url je naslov)).
Ko kliknem gumb za kalkulirat na 'prvi' strani, se podatki odpravijo na server, tam se izračuna, potem se podatki vrnejo v računalnik, in se na isti 'prvi' strani pokažejo rezultati. Problem je v tem, da ko s klikom gumba dodam še eno breme, (naj bi jih lahko dodal poljubno bremen) se odpravi na pot, ampak ne vzame prejšnjega bremena s sabo na server.
Mogoče lažji primer. S klikom na prvi gumb uporabnik vnaša iz textBoxa številke v listBox. S klikom na gumb 2 se te številke seštejejo in izpišejo. Vse na eni strani. Url se ne spreminja. Problem je v tem, da je struct-ura vedno prazna, Class prav tako, pa ne bi smela biti.
Zadnje, in nikakor ne najmanj pomembno je dejstvo, da o krospejdžingu prvič slišim. Raje bi session ali ViewState...

kje 'deklariram' in kako 'filam' ter kako 'dobim nazaj' podatke iz Class.a in struct-ure?

Hvala lepa!

Začetnik Beezgetz

darkolord ::

Session.Add("krneki", SeznamBremen);
Session.Add("krneki1", VnosBremen); 


prebereš pa takole:

SeznamBremen = Session["krneki"];
VnosBremen = Session["krneki1"];


Z ViewState je isto.

Beezgetz ::

Sem probal, še vedno ne dela tko k bi mogl. Bom pa še ustrajal.To moram narest, če ne, se bom še oglasil.

Hvala!

salesky ::

kaj pa to si probal

ListčBremenač SeznamBremen = new ListčBremenač();
ListčBremenač PreberiSeznamBremen = new ListčBremenač();

Nastaviš
session["krneki"] = SeznamBremen;

Dobiš pa

PreberiSeznamBremen = (ListčBremenač)session["krneki"];


Lahko pa probaš tudi tako

Nastaviš
HttpContext.Current.Session["krneki"] = SeznamBremen;

prebereš pa
PreberiSeznamBremen = (ListčBremenač)HttpContext.Current.Session["krneki"];

Beezgetz ::

Živijo Sale,

Glede session-a:
Sem probal, se ne zatika, sam tudi ne dela. Sem oba stavka dal v loadpage, pa nič,...
A jih moram kam drugam utaknit?

Http pa tud ne dela,:'(

Bom definitivno tole zrihtal, pa se javim, do takrat se pa ne bom branil še kakšnega navodila!

Hvala lepa,

Beezgetz

darkolord ::

Pokaži celotno (relevantno) kodo, ki jo imaš do sedaj

salesky ::

Pazi da imaš nastavljen page properties EnableSessionState="True" To v aspx strani.

Evo moj primer kode ki deluje(Teli using niso vsi potrebni, ampak jih VS2005 da vse not).V html strani pa imam en label in en gumb.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
label.Text = "Da vidimo če";
Session["test"] = "Test";
}
protected void button_Click(object sender, EventArgs e)
{
label.Text = "Če dela ti izpiše Test...-> "+Session["test"].ToString();
}
}

Zgodovina sprememb…

  • spremenil: salesky ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[ASP.NET] Prenos podatkov iz ene spletne strani v drugo

Oddelek: Programiranje
14866 (725) Cvenemir
»

ASP.NET + C# vprašanje

Oddelek: Programiranje
342652 (1666) Morenov
»

c# class

Oddelek: Programiranje
342156 (1750) japol
»

C# okna in podokna

Oddelek: Programiranje
111562 (1156) FlashM
»

C#, Dodajanje podatkov v Arraylist z Gumbom

Oddelek: Programiranje
82195 (2034) Beezgetz

Več podobnih tem