/ / ASP.NET (formularze internetowe): Używanie z kontrolkami serwera MINIMAL i zastępowanie JQUERY? - asp.net, jquery, formularze internetowe, kontrolery serwera

ASP.NET (webforms): Używanie z MINIMALNYMI kontrolkami serwera i zastępowanie JQUERY? - asp.net, jquery, formularze sieciowe, kontrole serwera

Obecnie pracuję z ASP.NET i osoba, która zaprojektowała formularz, wykorzystała wszystkie Kontrolki Serwera do takich rzeczy jak TextBox i Dropdowns itp., Kiedy tak naprawdę nie zapewniają one zwrotów zwrotnych .. Niektóre listy rozwijane i pola tekstowe są wartościami, których potrzebuję tylko w jQuery, o ile widzę, nie ma żadnych wad w pokryciu tych kontroli standard kontroli HTML zamiast kontroli serwera ASP.NET?

Przypuszczam, że będę musiał nadal mieć mój przycisk GetDataGrid jako kontrolkę serwera, ponieważ będę go potrzebował zwrotny (i odbieraj zdarzenia PageLoad itp. - wszystkie zdarzenia asp.net), aby zaktualizować GridView? A może byłoby możliwe użycie GridView (kontrolka serwera ASP.NET) z Webmethod i wywołanie go przez Jquery?

Oczywiście w mojej metodzie musiałbym użyć instancji widoku siatki, aby dodać źródło danych - ale nie widzę, jak to byłoby możliwe bez udziału w wydarzeniach ASP.NET - a może się mylę?

Inną rzeczą, o której myślałem, była zmianaPrzycisk GetGridView do standardowego kodu HTML i wywołanie zwrotnego javascript ze zdarzenia kliknięcia klienta? W ten sposób wykonałbym prawdziwy postback i skończyłbym w Page_load.

Biorąc wszystko w życie, nie chcę zmieniać kontrolki asp.net GridView, ponieważ działa ona tak samo jak kontrolka serwera asp.net, ale nie jestem pewien, jak to zrobiłbym.

Pamiętam dostępny dokument, który mówi„jak używać formularzy internetowych asp.net bez kontroli serwera”, ale nie mogę ich znaleźć. Przypuszczam, że używam formularzy internetowych takich jak asp.net MVC - ale nie mogę zmienić projektu na MVC - to poza moją kontrolą.

Chciałbym usłyszeć opinie na temat tego, jak to zrobić, komentarze itp.

Znajduję formularze internetowe ASP.NET, które wstrzykują do stron dużo zapachu kodu - używam .NET 3.5, więc większość danych wyjściowych pochodzi z tabel itp.

Odpowiedzi:

0 dla odpowiedzi № 1

Kilka myśli...

GridView nie może być utworzony w WebMethod inawet gdyby istniał sposób, aby to zadziałało, lepiej byłoby skorzystać z prawdziwej siatki po stronie klienta. Ponieważ nie jest to żadna opcja, nie sądzę, aby podejmowanie jakichkolwiek poważniejszych działań było zbyteczne. zmiany na istniejących stronach.

ViewState

Zmiana pól tekstowych, przycisków itp. Na wersje HTML przyniosłaby ci nieco mniejszy rozmiar Viewstate, ale dodatkowo skomplikowałaby sposób obsługi interakcji ze stroną. Możesz dodać runat="server" do formantów HTML, które dadzą ci kontrolę nad tym, co jest renderowane i nadal będziesz mieć dostęp do kontroli po stronie serwera.

.Net 4 daje znacznie większą kontrolę nad stanem wyświetlania, ale niestety w wersji 3.5 nie jest to takie proste.

GridViews

Możesz owinąć GridViews UpdatePanels. To „tani” sposób na dodanie interaktywności do twoich stron, chociaż nie zyskasz nic pod względem wydajności.

Nadal można również manipulować Gridview przy użyciu jQuery po stronie klienta. Istnieje wiele samouczków, postów na blogu itp. Wyjaśniających, jak to zrobić w Internecie.

MVC z formularzami internetowymi

Możliwe jest również mieszanie ASP.Net MVC z formularzami internetowymi w tej samej witrynie. Ponieważ wygląda na to, że znasz MVC, możesz rozważyć to podejście w przypadku nowych stron. Tutaj jest post na blogu wyjaśniający, jak to zrobić.

Aktualizacja: Tutaj jest nowszy artykuł Scotta Hanselmana na temat korzystania z MVC z istniejącą aplikacją Webforms.


1 dla odpowiedzi nr 2

Jeśli użyjesz Request.Form [„...”] wtedy możesz uzyskać informacje, które zostały wypełnione w standardowych polach wejściowych HTML.

Zamiast korzystać z kontrolki GridView, sugeruję, abyś spojrzał na jedno z nich jqGrid lub nowy system szablonów, który Microsoft wdrożył dla jQuery (obecnie wtyczka, ale prawdopodobnie będzie częścią podstawowego jQuery od wersji 1.5). Mogą się z tym wiązać json które można pobrać z wywołania webmethod lub pagemethod, aby wypełnić szablon danymi.


1 dla odpowiedzi nr 3

Również nie sądzę, że jest możliwe, aby asp.net (kod z tyłu) mógł odbierać wartości kontrolki html> bez posiadania runat = server.

Użyj metod internetowych. Ustaw zdarzenie klienta (np. „Onchange”) w kontrolce HTML, a następnie w funkcji javascript wywoływanej po uruchomieniu zdarzenia możesz użyć PageMethods, aby wysłać dane do kodu z tyłu.