2012-04-13 22 views

Odpowiedz

11

Jest to stary post, ale w przyszłości w jednym ASP.NET można wykonać następujące czynności, aby uniknąć pustego działania atrybuty:

<form action="#" runat="server"> 

to potwierdzi z W3C i nie wymaga, aby zrobić jakieś specjalne kodowanie w celu wykrycia adresu URL strony, na którym aktualnie się znajdujesz.

+0

W rzeczywistości jest to problematyczne. Jeśli spróbujesz stworzyć post z opcją action = "#", otrzymasz komunikat o błędzie serwera czasownika HTTP. – abegosum

+0

@abegosum Używam tego rozwiązania od jakiegoś czasu w ASP.NET bez zgłoszonego problemu, żadnego pomysłu, dlaczego tak się dzieje? –

+0

Może być problem z wersją lub ustawieniem usług IIS (podejrzewam, że jest to ustawienie zabezpieczeń zapobiegające niektórym typom wtrysku skryptów)? Czy twoja strona robi jakieś posty zwrotne? – abegosum

2

Pomiń atrybut action. Zgodnie z wersjami HTML5 nie jest to wymagane, ale jeśli występuje, jego wartość musi być niepusta. Odsyłacz: WHATWG HTML5 draft, description of action attribute.

+1

W ASP.NET nie można pominąć atrybut działania, jeśli kod

to uczyni jak ; tak po prostu działa. Zobacz moją odpowiedź na lepsze rozwiązanie. –

+2

Za każdym razem, gdy uczę się czegoś nowego o ASP.NET, nienawidzę go jeszcze bardziej. – Quentin

7
form1.Action = Request.Url.AbsoluteUri; 

to pracuje dla mnie

Powiązane problemy