La liaison de zone de liste avec un modèle dans MVC3
Mon modèle est
public class SiteConfig
{
public SiteConfig()
{
}
public int IdSiteConfig { get; set; }
public string Name { get; set; }
public byte[] SiteLogo { get; set; }
public string Brands { get; set; }
public string LinkColour { get; set; }
public IEnumerable<SiteBrand> SiteBrands { get; set; }
}
et
public class SiteBrand
{
public int Id { get; set; }
public int SiteId { get; set; }
public int BrandId { get; set; }
public Brand Brand { get; set; }
public SiteConfig SiteConfig { get; set; }
}
public class Brand
{
public int BrandId { get; set; }
public string Name { get; set; }
public IEnumerable<SiteBrand> SiteBrands { get; set; }
}
Je suis de la Base de Données de la première approche. Chaque SiteConfig dossier peut contenir un ou plusieurs de la Marque. Si la Marque est l'enregistrement d'une autre table appelée SiteBrand.
SiteBrand contient les forign de référence clé pour les deux SiteConfig(sur IdSiteConfig) et la Marque(BrandId).
Quand je suis entrain de créer un SiteConfig je veux afficher tous les Marque comme zone de liste dans laquelle l'utilisateur peut sélectionner un ou plusieurs enregistrement(ne choisissez pas n'importe quelle marque).
Mais quand je lier mon point de vue avec le modèle, comment puis-je lier mon zone de liste à la liste des marques et lorsque la vue est affiché comment puis-je obtenir les marques sélectionnées.
Et j'ai pour sauver la SiteConfig objet de base de données avec les Éléments sélectionnés. Et c'est ma DB diagramme.
C'est ma DAL, qui enregistre dans la base de données.
public SiteConfig Add(SiteConfig item)
{
var siteConfig = new Entities.SiteConfig
{
Name = item.Name,
LinkColour = item.LinkColour,
SiteBrands = (from config in item.SiteBrands
select new SiteBrand {BrandId = config.BrandId, SiteId = config.SiteId}).
ToList()
};
_dbContext.SiteConfigs.Add(siteConfig);
_dbContext.SaveChanges();
return item;
}
Quelqu'un peut-il advide comment lier la zone de liste et obtenir les éléments sélectionnés.
Grâce.
OriginalL'auteur Naresh | 2012-08-13
Vous devez vous connecter pour publier un commentaire.
Ajouter une nouvelle Propriété à votre SiteConfig ViewModel de type tableau de chaînes. Nous allons l'utiliser pour obtenir l'élément Sélectionné à partir de la
Listbox
lorsque des messages de l'utilisateur de ce formulaire.Dans votre GET méthode d'action, d'Obtenir une liste de
SiteBrands
et de céder à laSiteBrands
propriété de la SiteConfig ViewModel objetÀ des fins de démonstration, j'ai juste codé en dur de la méthode. Lorsque vous le mettre en œuvre, vous pouvez obtenir les Données à Partir de votre couche d'Accès aux Données.
Maintenant, à votre avis, qui est fortement typé à
SiteConfig
ViewModel,Maintenant, lorsque l'utilisateur soumet ce formulaire, vous recevrez les Éléments Sélectionnés de la valeur dans le
SelectedBrands
propriété du ViewModelPourquoi avez-vous besoin SiteBrands collection lors de la création d'un Siteconfig ? Je suppose que vous devez les Éléments Sélectionnés de la liste (c'est ce que vous avez demandé dans la question initiale). Mais si vous êtes rendu le même point de vue nouveau, alors vous devez Réaffecter les SiteBrands avant de reprendre votre viewmodel retour à la Vue, parce que HTTP est sans état
Parce que ma méthode de création prend un objet de type SiteConfig. Et ma db sait uniquement sur SiteBrands. L'Id n'est pas de savoir quelque chose au sujet Sélectionné id. Comme je l'ai expliqué dans ma question SiteBrand contient la clé étrangère fait référence à l'id de site ainsi que la Marque id.
Vous avez besoin de lire les éléments Sélectionnés ( qui a l'ID) et de le passer à votre Couche d'Accès aux Données qui enregistre ces données dans votre back-end). Depuis je ne sais pas à propos de votre couche d'accès aux données, je ne peux pas vous dire exactement quoi faire
Seulement maintenant que j'ai posté ma DB diagramme et de Créer de la méthode. Pourriez-vous me suggérer une meilleure façon de le faire. Merci.
OriginalL'auteur Shyju
Vous pouvez avoir un "ViewModel" qui a à la fois le site et de la marque modèle dans. Ensuite, vous pouvez lier votre point de vue à ce modèle. Cela vous permettrait de lier une partie de la vue de tout ou partie de la sous-jacentes des modèles.
Bien sûr, vous pouvez inclure toute autre information de votre point de vue pourrait avoir besoin (réduit le besoin de ViewBag).
OriginalL'auteur JTMon