Question

J'ai une application ASP.NET MVC qui utilise une vue unique pour afficher les propriétés et les enfants (avec leurs propriétés) d'une entité modèle.

Mon modèle ressemble à quelque chose comme ceci:

public class Market
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public IList<EmailAddress> EmailAddresses { get; set; }
}
public class EmailAddress 
{
    public virtual int ID { get; set; }
    public virtual int MarketID { get; set; }
    public virtual string Email { get; set; }
}

Sur le point de vue, je veux utiliser une table pour afficher la liste des adresses e-mail associées. Pour ce faire, je me sers Html.Grid.

<%= Html.Grid(Model.EmailAddresses).Columns( column =>
    {
        column.For(x => x.Email + Html.Hidden("ID", x.ID)).Encode(false).Sortable(false);
    })
    .Attributes(style => "width:100%")
    .Attributes(id => "emailGrid")
    .Empty("There are no Email Addresses set up") %>

Cependant, quand je fais ça, l'ID caché est celui du marché de l'entité mère, et non pas celle du EmailAddress.

Comment puis-je remédier à cette situation?

Était-ce utile?

La solution

Il semble que ce pourrait être un bug dans le WebGrid. Avez-vous essayé de renommer votre champ d'ID dans la classe EmailAddress, par exemple EMAILID et passer que la WebGrid et voir si elle affiche correctement?

Autres conseils

Cela fonctionne pour moi, pourrait-il que vous avez quelque chose de mal dans le remplissage de votre modèle?

Puisque vous utilisez l'expression lambda pour la méthode Column.For(), le paramètre x est re référence à un seul e-mail. Je pense que vous voulez dire de se référer au modèle, pas un seul e-mail ID

Au lieu de faire x.ID, je pense que vous voulez juste Model.ID

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top