Kiedy używać kontrolek typowych HTML a kiedy tych asp:Control ?
Jestem laikiem i pewnie bym używał samych tych asp, ale czy warto? Czy zaśmieca to serwer, tworzeniem obiektu? Czy np. poprawność wprowadzanych danych lepiej sprawdzać przez JS?
Akurat poprawność sprawdzanych danych należy sprawdzać zarówno przez JS (bo to przyjazne użytkownikowi) oraz po stronie serwera (bo to bezpieczniejsze). Ogólnie - używaj kontrolek ASP.NET, bo masz nad nimi kontrolę ze strony ASP.NET, pozostałe elementy nie będą przez twoją aplikację modyfikowane.
Albo przestaw się na ASP.NET MVC i pracuj bez kontrolek całkowicie.
Nie do końca rozumiem czym jest to ASP.NET MVC. Z tego co czytam to model projektowy dzielący aplikacje na część widoku, kontrolek, logiki.
Na razie uczę się w Web Developer Visual Express 2008, i jeszcze trochę się gubię w tym wszystkim.
Czyli mam do wyboru (według w3c) "Web pages" "Web Forms" i "MVC". Pewnie w MVC się zwykle pracuje?
A i jeszcze małe pytanie: kontrolki ASP nie obsługują style tzn chce sobie zrobić asp:label i bez umieszczania go w divie dać mu margin i position. Co na to?
A jeszcze jedno pytanie, skoro mam dostęp np do kontrolki text (tej z html'a) z poziomu serwera jak dodam runat="server" to może używać tej kontrolki bo mogę ją stylować a Label, literal już nie?
ubuntuser napisał(a):
Kiedy używać kontrolek typowych HTML a kiedy tych asp:Control ?
Tych drugich, gdy chcesz je modyfikować z code behind, tych pierwszych w pozostałych przypadkach.
Jestem laikiem i pewnie bym używał samych tych asp, ale czy warto? Czy zaśmieca to serwer, tworzeniem obiektu?
To, że serwer to nic, najbardziej to zaśmieca wynikowy kod strony, a przez to łącze.
Czy np. poprawność wprowadzanych danych lepiej sprawdzać przez JS?
W ramach ASP.NET WebFroms są kontrolki walidacyjne, które wygenerują ten JS za Ciebie.
ubuntuser napisał(a):
Nie do końca rozumiem czym jest to ASP.NET MVC. Z tego co czytam to model projektowy dzielący aplikacje na część widoku, kontrolek, logiki.
Jest to framework tworzenia aplikacji webowych oparty na wzorcu projektowym MVC i technologii ASP.NET. Jest to koncepcja odmienna od ASP.NET WebForms, które preferują coś w rodzaju pokracznego programowania sterowanego zdarzeniowo z upośledzoną emulacją stanu (bo HTTP jest bezstanowy).
Na razie uczę się w Web Developer Visual Express 2008, i jeszcze trochę się gubię w tym wszystkim.
Zmień na 2010.
Pewnie w MVC się zwykle pracuje?
To zależy - w nowych projektach jest coraz popularniejszy, ale stare to ciągle WebFormsy.
A i jeszcze małe pytanie: kontrolki ASP nie obsługują style tzn chce sobie zrobić asp:label i bez umieszczania go w divie dać mu margin i position. Co na to?
Właściwość CssStyle
kontrolki?
Tak się zastanawiam, skoro jest coś takiego jak formularz w htmlu, i zrobie go za pomocą zwykłych kontrolek html, i dam zwykły submit button (html) to jak dostać się do danych formularza? Czy do każdej kontrolki muszę dodać runat="server"? Kiedy w ogóle to dodajemy? I czy wtedy nie zmienia to kontrolki w asp:kontrolkę która jak mówiłeś zapycha łącze?
Buszuje sobie po klasie Request i niby tam jest coś takiego jak "Form" ale przeszedlem forem po GetKeys i GetValues i nic nie otrzymałem związanego ze stworzonym formularzem.
A w kursach asp które przeglądam stosują tylko kontrolki asp, wiem ze w książce bylo by lepiej wytlumaczone ale poki co funduszy mi brak na cos dobrego :P
W Request.Form
powinny być właśnie wszystkie dane z tego formularza, o ile jest on oczywiście prawidłowo skonstruowany.
Jeśli ustawisz runat="server"
i nadasz kontrolce id
, to zostanie utworzone pole klasy, do którego będziesz miał dostęp w code behind. Co z tego wynika - atrybut ten dodajemy, jeśli chcemy mieć dostęp do tego elementu HTML po stronie serwera.
To nie jest zamiana w kontrolkę ASP.NET, taka kontrolka to prosta kontrolka HTML, nie ma tylko właściwości i ustawień, co tamte.
Co dziwne, zaczęło mi działać dobieranie się do danych POST formularza, przy dodaniu do kontrolki html text runat="server". A myślałem, ze po to jest POST żeby nie tworzyć tej kontrolki na serwerze, tylko otrzymać same dane.
<form id="form1" runat="server" action="http://google.com" method="get">
<input runat="server" onclick="alert('A jednak spróbowałeś...'); document.getElementById('body').style.opacity=0; return true;" name="q" type="text" value="Nie klikaj tu!" /><input id="Submit1" type="submit" value="Edytuj tego posta" />
</form>
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.Form["Text1"]);
}
ubuntuser napisał(a):
Co dziwne, zaczęło mi działać dobieranie się do danych POST formularza, przy dodaniu do kontrolki html text runat="server". A myślałem, ze po to jest POST żeby nie tworzyć tej kontrolki na serwerze, tylko otrzymać same dane.
Nie wiem o co biega, POST to tylko jedna z wielu (siedmiu?) metod protokołu HTTP, a nie żadna magia ASP.NET.
Nie potrzeba nigdzie ustawiać runat="server"
.
<form action="Default.aspx" method="post">
<input name="Text1" type="text" /><input type="submit" value="Wyślij" />
</form>
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.Form["Text1"]);
}
W ten sposób można uzyskać ładny kod i lekką stronę... Tylko po co w takim razie używać WebForms? Cała "fajność" tej technologii polega właśnie na możliwości wykorzystania rozbudowanych kontrolek, którymi można robić na stronie cuda, przy minimalnym nakładzie tworzenia HTML/JS.
A jeśli chcemy pisać HTML i skrypty ręcznie, to chyba lepiej jednak użyć MVC.