O walidacji w ASP.NET MVC raz jeszcze - tym razem, skupię się tylko na stronie klienta. Wykorzystując do tworzenia layoutów, niestandardowe kontrolki, może się zdarzyć, że standardowa walidacja jQuery w ASP.NET MVC nie będzie działać - przykład z życia, konkretnie z dzisiaj: mamy textbox'a, służącego do wprowadzania kwoty - do wyrenderowania go, skorzystałem z pluginu do jQuery - autonumeric (warto się zapoznać - bardzo przydatne). Nie będę się wgłębiać w konfigurację samego pluginu, ogólnie rzecz biorąc...
O interfejsach napisano już wiele artykułów. Postaram się dlatego podejść do tego zagadnienia od innej strony. Na początek pytanie: czym różni się metoda wirtualna od implementacji metody z interfejsu? Mogło by się zdawać, że są to bardzo podobne operacje.
Sztuka programowania 3753 dni, 1 godzinę, 56 minut temu 197 źrodło rozwiń
Walidacja oparta o atrybuty walidacyjne jest w ASP.NET MVC świetnym rozwiązaniem - w standardowych rozwiązaniach sprawdza się znakomicie - jednak czasami, podczas pracy nad projektem dochodzimy do sytuacji, gdy zaczyna nam brakować standardowych atrybutów. W takim przypadku najczęściej warto stworzyć własny atrybut walidacyjny oraz jego obsługę. Nie jest to wcale takie trudne, co postaram się pokazać w niniejszym wpisie.Po pierwsze, atrybut walidacyjny Przykład - często zachodzi potrzeba sprawdzania wy...
Artykułów na temat Garbage Collector zostało napisanych już wiele. Dlatego nie będę przedstawiać dokładnie zasady jego działania, a raczej praktyczne wskazówki implementacji finalizerów i wzorca IDisposable.
Z komendy Make Object ID korzystam już od bardzo dawna, nie codziennie ale w niektórych sytuacjach jest ona nieodzowna. Ostatnio zorientowałem się jednak, że nawet doświadczeni użytkownicy VS mogą o niej wiedzieć i stąd pojawił się pomysł na ten post.
Funkcja GetHashCode używana jest tylko i wyłącznie w przypadku korzystania z kolekcji typu klucz wartość jak HashSet lub Dictionary. Funkcja ta nie jest tak oczywista jak się to zdaje i napisanie poprawnej jej wersji sprawia wiele problemów.
Tworząc własny typ w większości przypadków definiujemy także dla niego funkcje równości. Mało kto wie jednak że C# oferuje aż 4 takie funkcje.
O zdarzeniach było już wielokrotnie na blogu. Pokazywałem różne sposoby wywołania zdarzeń. Najpopularniejszym chyba sposobem jest poniższy wzorzec:publicclass Person { publicevent EventHandler FirstNameChanged; virtualprotectedvoid OnFirstNameChanged(EventArgs e) { if (FirstNameChanged !=null) FirstNameChanged(this, e); } } Jeśli wielowątkowość wchodzi w grę wtedy lepiej napisać:publicclass Person { publicevent EventHandler FirstNameChanged; virtualprotectedvoid O...
Sztuka programowania 3754 dni, 8 godzin, 43 minuty temu 99 źrodło rozwiń
Istnieją 4 słowa kluczowe, o których istnieniu wie niewielu programistów C#: _arglist, _refvalue, _makeref, _reftype. Stanowią one jednak ciekawostkę, o której istnieniu warto mieć pojęcie. Oficjalna dokumentacja(C# Keywords) nie wspomina o nich. Można jednak szybko przekonać się o ich istnieniu, gdyż Visual Studio podświetla je podobnie jak inne słowa kluczowe.
Jeżeli korzystamy z najnowszego Visual Studio 2012 Windows Desktop możemy się rozczarować gdy zamiast dobrze znanego okienka dostaniemy irytujące modalne okienko.
Tym razem przykład z życia! W ramach pracy nad projektem, w którym obecnie biorę udział, do generowania gridów na widokach, korzystamy z komponentu Telerika - ASP.NET MVC Grid. Niestety rowziązanie to ma pewne wady - w naszym przypadku, potrzebowaliśmy korzystać z Grida w trybie edycji po stronie klienta, a do przetwarzania zmian, zdefiniowana została w kontrolerze metoda UpdateGridData udekorowana atrybutamami Bind określającymi jak mają zostać zbindowane dane przekazane do kontrolera. Niestety, dane pr...
Jak przyjmować i jak zwracać kulturalnie – zastanawialiście się kiedyś na tym? Taki programistyczny savoir-vivre. Jak to zrobić, żeby mi (programiście) było wygodnie, a jednocześnie uszcześliwić przyszłego użytkownika API które tworzymy? Przecież to może być właśnie ja (ja piszący tego bloga)! Sprzedam wam dwie proste reguły (na bank są inne o których nie wiem), które warto zapamiętać lub przynajmniej sie nad nimi zastanowić. Przyjmowany parametr powinien być możliwie wysoko w drzewie dziedziczen...
Sztuka programowania 3756 dni, 17 godzin, 35 minut temu 146 źrodło rozwiń
Zdarzenia stanowią bardzo wygodny mechanizm monitorowania stanu obiektów. W .NET można spotkać je na każdym kroku. Kontrolki zarówno w WinForms jak i WPF, posiadają wiele zdarzeń, często kilkadziesiąt. Niestety każda deklaracja zdarzenia pochłania zasoby. Nie ma to znaczenia gdy obiekt posiada tylko kilka zdarzeń ale może to być zauważalne dla skomplikowanych klas np. kontrolek w WinForms. Każda kontrolka eksponuje dziesiątki zdarzeń a użytkownicy zwykłe korzystają wyłącznie z kilku – rzadko ma miejsce s...
Sztuka programowania 3757 dni, 8 godzin, 46 minut temu 121 źrodło rozwiń
Wystąpienie BadImageFormatException, wśród doświadczonych developerów, rodzi pytanie czy przez przypadek nie została załadowana zewnętrzna biblioteka w złej wersji- 32 lub 64 bitowej. Nie jest to jednak jedyna przyczyna występowania tego wyjątku.
Kod:
sealed class FolderFilesMappings : Dictionary
Sztuka programowania 3758 dni, 23 godziny, 22 minuty temu 157 źrodło rozwiń
Chce z poziomu kodu czytać konfigurację z pliku app.config (projekty desktopowe) lub Web.config (projekty webowe). Na przykład kolekcję zaufanych applikacji, które mogą korzystać z naszego serwisu. Do tego trzeba stworzyć 3 klasy dziedziczące po ConfigurationSection, ConfigurationElementCollection oraz ConfigurationElement.
Niniejszy blog oparłem na dotnetowym CMS'ie Orchard, jednak w standardowym zestawie modułów brakowało mi takiego, który wyświetlałby najnowsze komentarze do postów w formie listy. Postanowiłem więc stworzyć własny widget, który byłby za to odpowiedzialny (efekt można obejrzeć w lewym dolnym placeholderze na tej stronie). Poniżej opis tworzenia własnego widgetu.Przygotowanie modułu Na początek należy utworzyć nowy moduł Orcharda (dokumentacja dostępa tutaj). Na początek, trzeba upewnić się, że mamy zains...
Proces instalacji to czynność długotrwała. Dodatkowo wymaga on co jakiś czas uwagi, choćby po to, aby potwierdzić warunki licencji, lub wcisnąć przycisk Dalej, albo podjąć jakąś decyzję. Niniejszy artykuł opisuje co należy zrobić, aby przygotować instalację automatyczną, w pełni powtarzalną.
Bazy danych i XML 3760 dni, 8 godzin, 58 minut temu 56 źrodło rozwiń
Extension Methods można wykorzystać nie tylko do dodawania metod do istniejących klas, ale także jako najprostszy mechanizm mapujący. Nie musimy tworzyć całej biblioteki do mapowania, wystarczy dodać do klasy odpowiednią metodę np. Map.
W LINQ mamy dwie metody First() oraz Single(). Obie metody zwracają po jednym rekordzie. Jaka jest więc między nimi różnica? Zobaczmy na kawałek kodu i jego reprezentację w bazie MS SQL.