Kiedy używać jakich kontrolek HTML vs ASP

0

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?

1

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.

0

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?

3
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?

0

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

0

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.

0

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"]);
    }
0
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.

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