niedziela, 28 maja 2017

Tworzenie projektu

Jak często zdarza się Wam, że ktoś przychodzi i mówi:
"Chciałbym taką prostą aplikację, która będzie służyła do wprowadzenia paru prostych danych i wyświetlenia ich"

a za chwilę okazuje się, że oprócz wyświetlenia ma jeszcze wykonać parę "nieistotnych" obliczeń, raporty prezentować w zestawieniach rocznych, miesięcznych i dowolnych, dostęp do tego mogą mieć tylko nieliczne osoby, albo część powinna mieć dostęp do czegoś innego, a pozostali to jeszcze do czegoś innego, albo najlepiej jeszcze część danych powinno być automatycznie ściągane z jakiegoś innego programu ....

i tak mała aplikacja rozrasta się do wielkich rozmiarów.

Jak przystąpić do tworzenia projektu?
Ano tak, żeby poświęcić trochę czasu i spróbować przewidzieć, jak bardzo ta prosta aplikacja może się skomplikować.

Jak zaprojektować bazę danych, aby zmiana założeń nie wymuszała budowania projektu od początku?

Bardzo często zdarza się taka sytuacja i coraz bardziej jestem przekonana, że czas spędzony na projektowaniu i przemyśleniach nie jest czasem straconym. Dzięki temu rozbudowa aplikacji nie wymaga kompletnej zmiany i problemów z migracją danych.


sobota, 27 maja 2017

Razor

Razor to silnik renderujący, który znacząco upraszcza projektowanie widoków. Posiada on prostszą składnię, która wymaga po prostu mniejszej ilości kodu do uzyskania takich samych efektów co aspx. Ale trzeba się do niego przyzwyczaić.

Wykorzystanie go jest rzeczywiście proste, wystarczy pod wartość value podstawić nazwę odpowiedniej zmiennej wykorzystując:
<%=ViewBag.Name %>
lub po prostu
@ViewBag.Name
 
ja skorzystałam z @Model

<input class="span3" type="text" name="Imie" id="Imie" value=@Model.Imie onFocus="if 
(this.value == 'Imię') this.value = '';" onBlur="if (this.value == ''
 this.value = 'Imię';" />
<input class="span3" type="text" name="nazwisko" id="nazwisko" value=@Model.Nazwisko onFocus="if (this.value == 'Nazwisko') this.value = '';" onBlur="if (this.value == '') this.value = 'Nazwisko';" />
<input class="span3" type="text" name="telefon" id="telefon" value=@Model.Telefon onFocus="if (this.value == 'Telefon') this.value = '';" onBlur="if (this.value == '') this.value = 'Telefon';" />
<input class="span3" type="text" name="email" id="email" value=@Model.Email onFocus="if (this.value == 'Email') this.value = '';" onBlur="if (this.value == '') this.value = 'Email';" />
@Html.DropDownListFor(model => model.RodzajZabiegu, Model.Rodzaj_zabiegu(x => new SelectListItem { Text = x.Nazwa, Value = x.Id.ToString() }))
<div class="input-append date form_datetime">
      <input size="16" type="text" value=@Model.Data_od readonly>
      <span class="add-on"><i class="icon-th"></i></span>
</div>
 <script type="text/javascript">
     $(".form_datetime").datetimepicker({
             format: "dd MM yyyy - hh:ii"
     });
 </script>                     
<textarea name="message" id="message" class="span3" value=@Model.Inne_informacje onFocus="if (this.value == 'Dodatkowe informacje') this.value = '';" onBlur="if (this.value == '') this.value = 'Dodatkowe informacje';">Dodatkowe informacje</textarea>


Niestety utknęłam przy DropDownList. Mam wrażenie, że czegoś brakuje, ale... - sprawa do przegryzienia.