IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

TagsHelpers personnalisé MVC6 EF7


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 61
    Par défaut TagsHelpers personnalisé MVC6 EF7
    Bonjour à tous,

    J'utilise MVC 6 et EF 7. Voici mes codes:

    _ViewImport.cs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @using BFcMVC
    @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
    @addTagHelper "BFcMVC.TagsHelpers.TagsHelpers, BFcMVC"

    BFcMVC.TagsHelpers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    using Microsoft.AspNet.Razor.TagHelpers;
     
    namespace BFcMVC.TagsHelpers
    {
        public class TagsHelpers : TagHelper
        {
            public static string Truncate(string text, int length)
            {
                if (text.Length >= length)
                    return text.Substring(0, length) + "...";
     
                return text;
            }
        }
    }

    Et mon problème, Truncate n'est pas reconnu.
    Index.cshtml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Html.DisplayFor(modelItem => item.Article).Truncate(this,50) <-> error
    @Html.DisplayFor(modelItem => item.Article.Truncate(this,50)) <-> error
    @Truncate(...); <->error
    Si vous avez une idée comment le faire passé

    Bien à vous,

    Yagaam

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    salut,

    tu confond pattates et televiseurs.


    De ce que je comprends tu veux tronquer un string si la longueur depasse un max:


    Passe un coup comprende les methodes d'extentions...


    voila ce qu'il te faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public static class Class
        {
     
            public static string truncate(this string text, int maxlenght)
            {
                if (text.Length >= maxlenght)
                    return text.Substring(0, maxlenght) + "...";
     
                return text;
            }
        }
     
     
        public class demo
        {
            public void plop()
            {
                var teststring = "qhjskjdkle rjklsj fkl rjlde'";
               var result = teststring.truncate(10);
            }
        }

    Ensuite si tu veux tronquer tout en utilisant un displayFor, je vois pas trop de comment, ou je me dis que tu ne sais pas vraiment ce que fais un displayFor, encore moins un tagHelper.

    Car un displayFor va recup le template associe a ton type et sinon en emuler un donc si tu as un liste je crois qu'il va generer un table html par exemple, hors on va pas tronquer un table html par rapport a son nombre de caracteres. bref cela n'a aucun sens.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut Solution via taghelper
    La demo complete avec un tagHelper:

    le model:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class TestModel
        {
            public string AtricleLibelle { get; set; } = "AtricleLibelleAtricleLibelleAtricleLibelleAtricleLibelleAtricleLibelle";
        }
    La vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @model TestModel
    <truncate-string asp-for="AtricleLibelle" maxlenght="10"></truncate-string>

    Le viewimport:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @using MonProjet
    @using MonProjet.Models
    @using MonProjet.ViewModels.Account
    @using MonProjet.ViewModels.Manage
    @using Microsoft.AspNet.Identity
    @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
    @addTagHelper "*, MonProjet"
    @inject Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration TelemetryConfiguration
    Et enfin le tagHelper:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class TruncateStringTagHelper : TagHelper
        {
            private const string ForAttributeName = "asp-for";
     
            [HtmlAttributeName(ForAttributeName)]
            public ModelExpression For { get; set; }
     
            public int Maxlenght { get; set; }
     
            public override void Process(TagHelperContext context, TagHelperOutput output)
            {
                output.TagName = "span";
     
                var fullContent = For.ModelExplorer.GetSimpleDisplayText();
                var text = fullContent;
     
                if (text.Length >= Maxlenght)
                    text =  text.Substring(0, Maxlenght) + "...";
     
     
     
                output.Attributes["data-val-fullContent"] = fullContent;
                output.Content.SetContent(text);
            }
        }

    Voila solution testee et qui marche avec la version 6.0.0-rc1-final de mvc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Preferences] Personnalisé sa javadoc
    Par popogendarme dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 21/01/2005, 14h45
  2. [VB.NET] Contrôle personnalisé dans une dll personnalisée
    Par c3b12 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/10/2004, 07h56
  3. [VB.NET] Evenement par défaut sur controle personnalisé
    Par anthony70 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/08/2004, 16h19
  4. [CR]Help numero page personnalisé
    Par juelo dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 09/01/2004, 16h59
  5. Réponses: 9
    Dernier message: 14/10/2003, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo