J'ai un modèle avec des entités BlogPost et Tag.ASP.NET MVC 3: Modèle Blog Posts Tags Binding Best Practices
public class Tag
{
public string Name { get; set; }
public string Slug { get; set; }
}
public class BlogPost : ITaggable
{
public BlogPost()
{
this.Tags = new List<Tag>();
}
public ICollection<Tag> Tags { get; set; }
[AllowHtml]
public string Text { get; set; }
}
Sur admin Les balises de page d'édition BlogPost doivent être représentées dans une entrée de texte, séparées par une virgule. Assez semblable à l'entrée de la balise StackOverflow.
Cela signifie la sérialisation de ICollection à une chaîne, et la désertification retour à une collection. Je suis content du classeur par défaut, à côté de la collection Tags de BlogPost.
Il y a peu d'options que je connais pour y faire face:
Modèle personnalisé Binder - avec un besoin de passer outre toutes les liaisons Blogpost - il y a vraiment des propriétés du lot dans une entité réelle BlogPost.
Créez une entrée de texte non liée à un modèle BlogPost et obtenez/définissez ses valeurs à l'aide des paramètres de formulaire. Cela nécessite également plus de travail manuel.
Quelque chose d'autre ....
Comment voulez-vous mettre en œuvre l'entrée des tags pour un billet de blog?
MISE À JOUR:
Pour l'instant j'essaie ceci:
public List<Tag> Tags { get; set; }
public string TagsString {
get
{
var tags = Tags.Select(tg => tg.Name).ToArray();
var res = string.Join(",", tags);
return res;
}
set
{
var tags = value.Split(',');
Tags = new List<Tag>();
foreach (var tag in tags)
Tags.Add(new Tag { Name = tag });
}
}