Faire un postback Asp.net dans une Dialog JQuery UI

Peut être que parmi vous certains ont déjà rencontré ce problème :

Lorque l’on utilise une dialog JQuery UI (http://jqueryui.com/demos/dialog/) et que l’on y place un bouton asp.net, au clic sur celui-ci un refresh de la page est bien effectué, mais ni de postback ni le déclenchement de l’évènement est apellé. Mais pourquoi donc ? WTF ? Lire la suite

Livre : Professional ASP.NET MVC 1.0

Professional ASP.NET MVC 1.0

J’ai terminé de lire ce bookin y a déjà un mois … un mois que je dois écrire ce post.

Dans l’ensemble le livre est plutôt bon, même si je le conseil plutôt à des débutant en ASP.NET MVC.
J’ai bien aimé le premier chapitre qui est un step by step de la création de http://www.nerddinner.com/.
le Chapitre 9 à aussi sont importance, c’est l’essentiel de la sécurité d’une app MVC. Il faut le lire car beaucoup de résponsabilité sont maintenant délégué à/aux développeur(s).

Ma note : [Rating:3.5/5]

Voici une rapide liste des points important que j’en ai tiré :

  • Toujours faire une redirection après un post d’un formulaire (pattern PRG , post redirect get)

  • Utiliser la même url pour l’édition et l’ajout d’une entité (même route)

ex :

si l’id est null c’est une création sinon c’est une édition

  • Utiliser la méthode UpdateModel() ou TryUpdateModel() en spécifiant les champs à mettre à jour
  • Gérer les exceptions au niveau du controller et rediriger vers une autre action si nécessaire
  • Pour une action dans le controller qui supprime ou met à jour une entité utiliser la méthode HTTP POST ou mieux DELETE et PUT

  • Ajouter l’attribut Bind sur les actions qui mettent à jour des entitée (même fonctionnement que le UpdateModel())

  • créer un model dédié à l’affichage : ViewModel. Plus sécurisé et moins gourmand, on ne revoit que ce qu’il y a besoin

  • Utiliser un int? comme paramètre pour une pagination et utiliser ?? pour le tester

  • Ajouter l’attribut [Authorize(Roles="admin")] pour sécuriser les action des controller

  • User.Identity.Name permet de récupérer l’identité de l’utilisateur actuel

  • Ajouter des méthodes “simple” dans le modèle, qui n’agit que sur le modèle
  • Ajouter des fonctionnement ajax sur des action basic
  • Utiliser jQuery pour animer visuellement la partie mise à jour depuis un appel Ajax

  • Pour retourner un contenu au format json faire appel à JSon(something) dans l’action

  • Créer des tests unitaire avec un nommage du type Noun_Should_Verbs()
  • Tester les validation
  • Tester la sécurité via des mock
  • Tester la mise à jour des modèles ( UpdateModel() )
  • Tester les routes
  • Les routes ont un ordre !!
  • Ajouter des contraintes de type expression régulière sur les routes
  • * dans une route récupère tous les paramètres
  • Ajouter des routes a ignorer IgnoreRoute() pour des scripts ou des fichiers
  • Vérifier si c’est un appel AJAX en utilisant Request.IsAjaxRequest()
  • Gérer les exceptions via l’attribut HandleError

  • Sécuriser les méthode public des controller qui ne sont pas des Action avec [NoAction]

Bon je m’arrête là, ça fait déjà pas mal !
Peut être un prochain post sur la sécurité avec MVC.

Bulle d'aide avec jQuery et BeautyTips

Je suis actuellement en mission chez un client pour lequel je fais des développements Sharepoint 2007.
Une des webparts à développer devait contenir un genre de menu avec un tableau d’icon et lorsque l’utilisateur passe la souris sur un icon un sous menu apparait.

Une solution envisageable pour cette webpart est de simplement ajouter des contrôles de type Menu (asp.net) et de créer les menuitems nécéssaires. L’inconvénient majeur de cette solution c’est que ce pu*** de contrôle c’est de la m**** et qu’il génère plein de table dans le rendu html. Du coup pour customiser le designe c’est la misère. J’ai donc cherché un moyen de remplacer cela par quelque chose de plus propre, donc un bon petit plugin jQuery.

beautytipsMOSS2007

J’ai finalement utilisé un plugin de jQuery nommé BeautyTips qui permet d’afficher des bulles d’aide style google map. Ce plugin est pas mal fait, et laisse une bonne liberté au niveau du rendu et des ses options. Je vous invite à aller voir les demos ici : http://www.lullabot.com/files/bt/bt-latest/DEMO/index.html

Pour finir voici une petit capture du rendu de ma webpart. A noté que la bulle a des angles arrondis, un petit dégradé jaunatre transparent et tout ça avec un html est très propre :

Spécifier le tag de rendu d'un WebControl

Par défaut un custom WebControl génère un élément Span dans le rendu html.

Pour changer le type de tag il suffit  d'overrider la propriété TagKey.
Voici un exemple:

purecomponents

PureComponents Navigators is set of navigation components. In addition to the classic Navigator component, set contains navigation like in Access 2007, Outlook 2007 and SimpleNavigator ideal for options dialogs and similar simplified navigations.

One License: $199, Four Developer License with Source Code: $399, Site License with Source Code: $599
www.purecomponents.com

dotnetnuke for asp.net 2 is ready

Ca fait plusieurs jours que je voulais installer la version ASP.NET 2 de dotnetnuke pour voir ce que ça donne. Et par magie je reçois un mail de l’ancien et fameux webhosting, vous vous rapellez l’hébergeur gratos asp.net de microsoft ! Et ba le nom a changé, c’est maintenant vwdhosting et devinez quoi ! L’hébergement ASP.NET 2 est gratuit pour un mois !