Archives par mot-clé : ASP.NET MVC

[ASP.NET Core] Tester si une vue existe

Depuis la version d’ASP.NET Core (MVC 6) les anciens codes pour tester l’existence d’une vue ne fonctionnent plus du tout.

En recherchant un peu sur Internet on trouve essentiellement des tests d’existence des fichiers dans le dossiers « ~/Views » de l’application. Toutefois le système de vue utilise les File Providers pour obtenir les fichiers de vue. C’est notamment mon cas dans un projet où des vues sont « incorporées » dans les DLLs il faut donc ajouter des « EmbeddedFileProvider » (voir mon post précédent).

Par conséquent le test de fichier ne fonctionne pas dans ce cas.

Ma technique est tout simplement de demander au moteur de vue si la vue existe.

Continuer la lecture de [ASP.NET Core] Tester si une vue existe

[ASP.NET Core] Editer les vues Razor embarquées dans une librairie

En ASP.NET Core on a la possibilité de modulariser son application Web en créant des librairies permettant de partager le code (les contrôleurs, modèles, etc.).

Nous avons également la possibilité d’incorporer des ressources (fichiers script, images, vues Razor) auxquelles on peut ensuite accéder via le fournisseur de fichier EmbeddedFileProvider. En enregistrant ce fournissant dans le moteur Razor, on peut ainsi accéder aux vues qui sont embarquées dans la librarie.

Toutefois une difficulté ce pose, VS2017 n’est pas capable de prendre entièrement en charge l’édition des vues Razor, un ensemble d’erreurs s’affichent et certains fonctionnalités IntelliSense ne sont pas disponibles.

Continuer la lecture de [ASP.NET Core] Editer les vues Razor embarquées dans une librairie

ASP.NET MVC: faire un RenderSection() optionnel

ASP.NET MVC: faire un RenderSection() optionnel

Dans le cadre d’un développement j’ai eu besoin de rendre optionnel un appel à un RenderSection() dans mon layout (ma section devant être générée selon certaines conditions).

@if(condition)
{
    @RenderSection("section", required:false)
}

Continuer la lecture de ASP.NET MVC: faire un RenderSection() optionnel

ASP.NET MVC: jQuery Validation en français

ASP.NET MVC nous fourni des mécanismes de validation des informations saisies dans les formulaires. Nous avons deux types de validation:

  • Validation à la saisie en JavaScript via jQuery.Validation
  • Validation dans le contrôleur lorsqu’il bind les valeurs dans les modèles. Utile lorsque la validation JS n’est pas active ou que le Javascript a été désactivé sur le navigateur du client.

Nous, petits français que nous sommes, utilisons un format de nombre et de date spécifique. Pour la partie MVC il nous suffit de force la culture du thread dans la langue qui nous intéresse pour que la conversion du texte en nombre ou date se passe sans problème.

Cela se corse lorsqu’il faut toucher à la validation jQuery.

Continuer la lecture de ASP.NET MVC: jQuery Validation en français

ASP.NET MVC : binding de modèle à « null »

ASP.NET MVC : binding de modèle à « null »

Petit rappel des règles de binding de modèle en ASP.NET MVC pour éviter de perdre des heures, comme je viens de le faire 😉

Soit notre modèle :

public class Hardware
{
  public int ID{ get; set; }
  public String Manufacturer { get; set; }
  public String Model { get; set ;}
}

Notre action dans votre contrôleur:

[HttpPost]
public ActionResult Update(Hardware model)
{
  if(ModelState.IsValid){
    // ...
  }
  return View(model);
}

Lorsque que vous postez votre formulaire, votre modèle est null.

Cela est du au fait que le nom de votre argument représentant votre modèle est le même que celui d’une des propriétés de votre modèle.

Dans notre cas c’est model vs Hardware.Model. En effet la priorité du binder est de mapper les éléments d’un formulaire vers les arguments de même nom. Dans notre cas Hardware.Model est une chaîne, et l’argument model est un Hardware qui n’est pas compatible avec une chaîne donc notre model est null.

Nous n’avons qu’a modifier le nom de notre argument hardwareModel par exemple, et notre modèle est de nouveau bindé correctement.

A bientôt,

Yanos