[ student8 @ 23.08.2004. 14:06 ] @
Početnik sam u C# ASP.NET programiranju. Radim seminarski rad koji treba da se sastoji iz nekoliko web formi.

Startna web forma `WebForm1.aspx` ima tag <form .. runat=server></form> sa default akcijom na tu istu formu, i podaci se korektno šalju na istu. Problem nastaje kada želim da mi se podaci šalju na neku drugu formu (recimo `NovaForma.aspx`), koju dodam preko wizarda, promenim action parametar (action=NovaForma.aspx), i startujem aplikaciju - eksplorer i dalje koristi stari action (iako se u Visual Studiu svuda registruje novi action - u HTML pogledu, čak i u Properties panelu).

Molim za objašnjenje - gde grešim.
Ukoliko mislite da sam stvar uradio ispravno, možete li da pošaljete ovde neki primerčić (od 2 web forme) koji je funkcionalan? Hvala unapred.
[ nervozica @ 25.08.2004. 20:00 ] @
izgleda da po defaultu stavlja svoj action. Nikakvo pametno objasnjenje za sada nemam, ali zato mozes da izvrsis redirekciju strane.

Response.Redirect("WebForm2.aspx")
[ mmix @ 29.08.2004. 14:28 ] @
Postoji način da se isforsira promena target-a, treba ubaciti sledeći kod:
Code:
private void Page_Load(object sender, System.EventArgs e)
{
   RegisterOnSubmitStatement("submit", "document.Form1.action='WebForm2.aspx'");
}


Međutim, prvo na šta ćeš naleteti je blokada u WebForm2. Izbaciće ti grešku:
The viewstate is invalid for this page and might be corrupted.
Mali pogled u MSDN daje:
Citat:
This problem occurs because the EnableViewStateMac attribute of the <pages> element is set to true by default. When this attribute is set to true, ASP.NET runs a message authentication check (MAC) on the view state of the page when the page is posted back from the client. This check determines if the view state of the page was modified on the client. For security purposes, it is recommended that you keep this attribute set to true.


Dakle, u target stranici ne smeš koristiti siguronosnu proveru ViewState, pa moraš staviti:
enableViewStateMac="False" unutar <%@ Page ... %> direktive.

Sva polja sa prethodne stranice, uključujući i ViewState koji se nalazi u skrivenom polju __VIEWSTATE možeš pročitati iz Request.Form kolekcije. Nisam proveravao, ali mislim da ćeš imati i neke konflikte ako na obe stranice imaš kontrole različitog tipa sa istim ID, itd.

U svakom slučaju, ovo je bilo "Kako to uraditi?", a konkretan savet je "Nemoj ovo raditi"
ASP.NET nije predviđen da radi kao ASP, cela njegova moć se uglavnom zasniva na tome da ista stranica primi action reponse kako bi se obavljala server-side obrada. Ako samo hoćeš da pređeš na drugu stranu koristi Resposne.Redirect kako ti je nervozica rekao, a ako hoćeš da preneseš Form i QueryString kolekcije unutar serverske obrade, koristi Server.Transfer("WebForm2.aspx, true); (za ovo drugo rešenje takođe moraš da prebaciš enableViewStateMac na false).

[ ZokiR @ 30.08.2004. 06:41 ] @
Citat:
mmix:
U svakom slučaju, ovo je bilo "Kako to uraditi?", a konkretan savet je "Nemoj ovo raditi" :)
ASP.NET nije predviđen da radi kao ASP, cela njegova moć se uglavnom zasniva na tome da ista stranica primi action reponse kako bi se obavljala server-side obrada.

S tim što se to menja u ASP.NET 2.0 u kome će postback moći da ide na neku drugu stranu korišćenjem PostTargetUrl propertija.