piątek, 16 kwietnia 2010

ConfirmSubmit - HtmlHelper Extensions cz.1

Jedną z tzw dobrych praktyk projektowania aplikacji w ASP.NET MVC jest stosowanie HtmlHelper w przypadkach bardziej skomplikowanego kody widoku. Co można w skrócie nazwać "Keep your views simple". Obiekt Html oczywiście nie realizuje każdego z możliwych scenariuszy stąd powinien być w trakcie kodowania uzupełniany o dodatkowe funkcjonalności pisząc stosowne metody rozszerzające. Stąd też pomysł na niniejszy cykl postów w którym postaram zaprezentować parę przydatnych rozwiązań.

ConfirmSubmit czyli najpierw zapytaj

Tworząc różne formy do edycji/tworzenia/usuwania obiektów wypada czasem upewnić się czy użytkownik na pewno wie co robi ;] Istnieją różne metody, ale chyba najprostsza to wyświetlenie okienka z poziomu javascript:
<input  type="submit" value="Usuń" onclick="return confirm('Czy na pewno?')" />
Zakładając, że w przeglądarce nie mamy wyłączonej obsługi js (co w dobie aplikacji internetowych i Ajaxa jest rzadkością) otrzymamy coś na kształt:


Wszystko pięknie działa, ale jest hmm, niewygodne i do tego nie zgodne z zasadą tworzenia widoków o której wcześniej wspominałem. Stąd też proste rozszerzenie ConfirmSubmit:
public static  MvcHtmlString ConfirmSubmit(
    this HtmlHelper html,
    string value,
    string question)
{
    string submit = String.Format(
        "<input type=\"submit\" value=\"{0}\" onclick=\"return confirm('{1}');\"",
        value,
        question);
    return MvcHtmlString.Create(submit);           
}
Do kompletu jeszcze wywołanie i wszyscy są szczęśliwi:
<%=Html.ConfirmSubmit("Usuń", "Czy na pewno?") %>

Brak komentarzy:

Prześlij komentarz