Vous pouvez créer une collection personnalisée de type et nom de l'éditeur afin de correspondre à ce que.
En supposant que vous avez créé une collection personnalisée appelé Tags
vous pouvez changer votre modèle:
class MyModel
{
Tags Tags { get; protected set;}
}
Puis vous le nom de votre rédacteur en chef et des modèles d'affichage Tags.ascx
.
Ce qui rendrait votre afficher le code du travail comme tu le voulais:
<%= Html.EditorFor(t => t.Tags) %>
Pour la collection personnalisée en gros, vous avez juste à créer un wrapper autour de la mise en œuvre d'un générique de collecte et d'exposer les méthodes et les propriétés:
public class Tags : IList<Tag>
{
//Use a private List<Tag> to do all the
//heavy lifting.
private List<Tag> _tags;
public Tags()
{
_tags = new List<Tag>();
}
public Tags(IEnumerable<Tag> tags)
{
_tags = new List<Tag>(tags);
}
#region Implementation of IEnumerable
public IEnumerator<Tag> GetEnumerator()
{
return _tags.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return _tags.GetEnumerator();
}
#endregion
#region Implementation of ICollection<Tag>
public void Add(Tag tag)
{
_tags.Add(tag);
}
public void Clear()
{
_tags.Clear();
}
public bool Contains(Tag tag)
{
return _tags.Contains(tag);
}
public void CopyTo(Tag[] array, int arrayIndex)
{
_tags.CopyTo(array, arrayIndex);
}
public bool Remove(Tag tag)
{
return _tags.Remove(tag);
}
public int Count
{
get { return _tags.Count; }
}
public bool IsReadOnly
{
get { return false; }
}
#endregion
#region Implementation of IList<Tag>
public int IndexOf(Tag tag)
{
return _tags.IndexOf(tag);
}
public void Insert(int index, Tag tag)
{
_tags.Insert(index, tag);
}
public void RemoveAt(int index)
{
_tags.RemoveAt(index);
}
public Tag this[int index]
{
get { return _tags[index]; }
set { _tags[index] = value; }
}
#endregion
}