MVC 3 jest fajne, nie jest idealne, ale jest bardzo dobre i można za pomocą jego stworzyć niesamowite rzeczy. Jednak mimo wszystko, MS zawsze potrafi pewne rzeczy utrudnić jak nie wiem co. W szczególności z jego ulubionym typem widoczności internal, który uważa chyba za święty nawet w aplikacjach open-source. Jednym z takich ich fopa moim zdaniem jest EditorFor, niby fajny, niby wystarczający, ale wystarczy, że chcemy dać inną klasę by wyróżnić dany element i już trzeba tworzyć EditorTemplate, a mnie to...
autor: W ostatnim postcie wspomniałem o trzeciej możliwości walidowania pól po stronie klienta: Nierobienie nic i przeciążenie zdarzenia submit, tak by wykonać raz (nie licząc pierwszego wymuszonego przez unobtrusive validation) parsowanie Może się zastanawiać ale po co mamy to przeciążać, tylko ze względu na te kilka dynamicznych pól? TAK :) (odpowiedź na to pytanie na końcu postu) oraz dlatego, że domyślna walidacja zwraca false, czyli blokuje jakiekolwiek akcje dalej. Jeżeli zostanie ona wykonana ...
W poprzedniej części spowodowaliśmy by generowały się atrybuty walidacyjne dla elementów dynamicznie generowanych. Jednakże mimo ich poprawnego dodawania do elementów, walidacja po stronie klienta nie działała dla dynamicznie dodanych elementów – przy tworzeniu byli to autorzy książki, zaś przy edycji nowi jeszcze nie dodani autorzy. Rozwiązanie byłoby dość banalne, gdyby mi choć raz zadziałało, tak jak wspominał Procent u siebie na blogu, powinno wystarczyć wykonanie następującej linijki:
Ostatnimi czasy zajmowałem się przygotowanie obcojęzycznej wersji systemu, na który składa się cała plejada aplikacji napisanych w różnych technologiach, od ASP.NET przez WinForms po WPF. Do tej pory zagadnienie to znałem przede wszystkim ze strony teoretycznej. To znaczy wiedziałem o różnych mechanizmach wbudowanych w .NET wspierających ten proces, nie omieszkałem ich wypróbować ale nie miałem okazji zastosować tej wiedzy do dużego i skomplikowanego systemu. Powiem więcej, proces lo...
W poprzedniej części opisałem w jaki sposób możemy generować listy elementów do edycji/tworzenia tak by nie przejmować się numerycznym indeksem. To co nam jednak pozostało to sprawa walidacji danych. Najlepszym przykładem będzie zmodyfikowanie kodu, który już posiadamy (najnowsza wersja na github) – dodajmy atrybut Required dla własności Name w CreateAuthorViewModel. Następnie odpalmy projekt, wejdźmy na zakładkę Books i potem kliknijmy Create New. Jeżeli teraz klikniemy na Add book author i nie wprowa...
Jakub Gutkowski: Ostatnio rozmawiałem ze znajomym, który stwierdził, że jeżeli nie wykorzystuje się wbudowanych w MVC 3 klas i metod to robi się coś źle. Nie zgadzam się z tym twierdzeniem, to co jest zajebiste w MVC 3 to to, że dzięki kilku prostym linijkom kodu można rozszerzyć implementację o niezbędną w danej chwili funkcjonalność. W końcu jak powstało RoR? Trochę teorii Z jedną z takich funkcjonalności jest możliwość edycji dynamicznych (dodaj/usuń/edytuj) list – tak by za pomocą jednego submit prz...
Wpis o tym jak poprawnie wykorzystywać JSON w web serwisach na ASP.NET, jakich błędów unikać przy implementacji takowych oraz o customowych serializatorach JSON dla ADO.NET
Mechanizm dziedziczenia jest ogólnie znany oraz chętnie wykorzystywany w programowaniu obiektowym. Nie wiedzieć czemu w aplikacjach internetowych stosuje się go raczej rzadko. W tym artykule chciałbym zaprezentować jak wykorzystać dziedziczenie w sprytny sposób w aplikacji webowej.
The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>). to paskudny błąd, który generowany jest przez klasę System.Web.UI.ControlCollection. Ma to miejsce przy próbie modyfikacji kolekcji, na przykład przez wywołanie Add(Control control), w przypadku kiedy kontrolki w niej zawarte korzystają z wyrażeń postaci <% ... %> lub <%= ... %>. Istnieje kilka sposób ominięcia tego problemu: Kod zawierający wyrażenia <% ... %> lub <%= ... %> umieścić w ...
Kilka miesięcy temu, we wpisie związanym ze tworzeniem stron, jeszcze w ASP.NET MVC 2, otarłem się delikatnie o zagadnienie reguł routingu w ASP.NET MVC. Generalnie, jest to dość istotne zagadnienie, dlatego warto zapoznać się z nim trochę szerzej, Tym bardziej, że wpływa ono w sposób znaczący zarówno na przepływ danych jak i ruch użytkowników naszej witryny.
Kilka miesięcy temu (na przełomie roku), pisałem na temat ASP.NET MVC 2. Nie minęło nawet pół roku, od czasu powstania tych wpisów, a już możemy się cieszyć z kolejnej wersji, czyli ASP.NET MVC 3. Co istotne, w nowym wydaniu pojawiło się kilka znaczących usprawnień (o tym za chwilę). Tych z Was, którzy tworzyli projekty w ASP.NET MVC 2 (np. stworzyli stronę za pomocą tutoriala zawartego na tym blogu), zapewne ucieszy fakt, że z powodzeniem będziecie mogli skonwertować taki do projekt, by móc korzystać ze...
Niedawno po raz pierwszy w życiu zajmowałem się Google Maps. Spodziewałem się, że zajmie to max kwadrans, w końcu masa stron to ma, dokumentacja jest dobra... no i moja Joanna na mapach zęby zjadła:). Niestety nawet z połączonymi siłami poprawne skorzystanie z map zajęło nam dobre kilka godzin. Problemem okazało... w sumie kilka rzeczy. Wymagania: po kliknięciu w link otwórz popup z mapką pokazującą odpowiedni adres zakładając, że na stronie może być takich linków wiele. Odpadała więc jednokrotna inicja...
Jeżeli w MVC 3 (nie wiem jak w wcześniejszych wersjach), chcecie po operacji submit formularza zaktualizować jakąś wartość w waszym modelu to niezależnie jak byście się wysilali nie uda się wam to. Są dwa wyjścia z sytuacji (przynajmniej mi znane): Wyczyszczenie całego stanu modelu za pomocą metody ModelState.Clear() – wymaga to jednak następnie uzupełnienia wszystkich pól modelu – odświeża to cały model; Wyczyszczenie pojedynczej wartości za pomocą metody ModelState.SetModelValue.
Bardzo fajną sprawą w MVC jest możliwość generowania atrybutów elementów za pomocą anonimowego typu.
Areas pozwalają na rozbicie aplikacji na obszary. Każdy z obszarów będzie miał swój zestaw kontrolerów, widoków i routing. Wszystkie obszary mogą nadal korzystać z katalogu Shared, nadal możemy mieć główny obszar (ten który był dostępny do tej pory). Dodanie obszaru jest proste: Utworzony zostanie katalog Areas a w nim nasz nowy obszar oraz nowy zestaw katalogów ze strukturą MVC. Została również utworzona klasa typu AreaRegistration. Region zostanie automatycznie zarejestrowan...
Achronous Controller - asynchroniczne kontrolery Asynchroniczne wywołania mogą poprawić wydajność aplikacji, jednak zawsze powodują dużo większe skomplikowanie kodu. W artykule na MSDN wymienione jest kilka punktów kiedy warto używać asynchronicznych wywołań jak np. długo trwające operacje wejścia-wyjścia, inne długo trwające operacje, czy nastawienie na wielowątkowość. Klasyczny kontroler (z klasycznym przykładem) wywołania z jakiegoś serwisu: public class HomeController : Controller { public A...
Procent od jakiś dwóch lat pisze jakie fajny jest plugin do jQuery o nazwie DataTables. 3 dni temu w końcu miałem okazję się przekonać, jaki on naprawdę jest fajny! :) Jeżeli jeszcze z niego nie korzystaliście, to zachęcam do zapoznania się z nim. Na stronie dostępne jest wiele przykładów pokazujących co i jak – naprawdę aż dziw bierze, że coś open-source może mieć taką dokumentację.
Wielu niezależnych developerów i małe firmy korzystają z usług firm hostingowych ze względu na koszty. Na jednym serwerze może działać kilkadziesiąt oddzielnych stron. Ważna jest taka ich konfiguracja, aby żadna nie mogła zaszkodzić pozostałym i aby nie mogły odczytywać np. ciągów połączeń ze swoich web.configów. IIS pozwala firmom hostującym strony na zdefiniowanie poziomów zaufania, które określają operacje, które mogą być wykonywane (lista poniżej, zobacz także tą stronę). Istnieje także możliwość zde...
Razor to nowy silnik renderujący dla ASP.NET MVC. Polecam wszystkim zapoznanie się: http://msdn.microsoft.com/pl-pl/library/razor–nowy-silnik-renderujacy Składnia jest naprawdę prosta i znacząco upraszcza tworzenie widoków.
Testowanie baz danych… a raczej kodu Marzec 31, 2011- autor: dotornot Dziś po oglądnięciu kolejnego świetnego odcinka na CodingTV, postanowiłem napisać aktualny post. Osobiście z niecałym dwuletnim stażem w programowaniu i zerowym doświadczeniem zawodowym (ach, nie mogę się doczekać do 4.04 ), jestem pełen podziwu dla roboty, którą wykonują. Panowie w dzisiejszym odcinku mieli problem z testowaniem baz danych, a raczej dostępu do niej. Ja chcę tutaj przedstawić sposób w jaki ja to robię. ...