2010-01-05 6 views
6

Je voudrais savoir comment je peux lier mes valeurs de formulaire à ma vue fortement typée à partir d'une boîte MultiSelect.asp.net mvc fortement typé voir le modèle avec multiselect

De toute évidence, lorsque le formulaire soumet la boîte de sélection multiple soumettra une chaîne de mes valeurs choisies ... quelle est la meilleure façon de convertir cette chaîne de valeurs dans une liste d'objets à attacher à mon modèle pour être actualisé?

public class MyViewModel { 
    public List<Genre> GenreList {get; set;} 
    public List<string> Genres { get; set; } 
} 

Lors de la mise à jour de mon modèle à l'intérieur du contrôleur j'utilise UpdateModel comme ci-dessous:

Account accountToUpdate = userSession.GetCurrentUser(); 
UpdateModel(accountToUpdate); 

Cependant j'ai besoin d'une certaine façon obtenir les valeurs de la chaîne en objets. Je crois que cela a peut-être quelque chose à voir avec les reliures de modèles, mais je ne trouve pas de bons exemples clairs sur la façon de procéder.

Merci! Paul

Répondre

3

Vous avez raison de dire qu'un modèle de classeur est la solution. Essayez ceci ...

using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 
using System.Web.Mvc; 

[ModelBinder(typeof(MyViewModelBinder))] 
public class MyViewModel { 
    .... 
} 

public class MyViewModelBinder : DefaultModelBinder { 
    protected override void SetProperty(ControllerContext context, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value) { 
     if (propertyDescriptor.Name == "Genres") { 
      var arrVals = ((string[])value)[0].Split(','); 
      base.SetProperty(context, bindingContext, propertyDescriptor, new List<string>(arrVals)); 
     } 
     else 
      base.SetProperty(context, bindingContext, propertyDescriptor, value); 
    } 
} 
0

Découvrez Phil Haacks blog post sur le sujet. J'ai utilisé cela comme base pour une vue multi-typée fortement typée dans un projet récent.

+0

poste de Haack est sur la liaison liste des objets, non ... des listes déroulantes –

Questions connexes