2013-06-05 1 views
1

J'essaie d'envoyer une liste de contrôle à mon contrôleur de mon point de vue. J'ajoute dynamiquement des éléments avec une zone de texte et un bouton, et je veux être capable de renvoyer tous ces éléments à ma vue dans une sorte de tableau. Comment ferais-je cela?Envoi de la sélection au contrôleur

J'ai eu l'modelcode suivante:

[HttpPost] 
    public ActionResult BasicIdentificationIndex(MyObject returndata, List<int> ints) 

Et puis quelques boîtes d'entrée:

<input type="text" name="ints" value="1" /> 
<input type="text" name="ints" value="4" /> 
<input type="text" name="ints" value="2" /> 
<input type="text" name="ints" value="8" /> 

Ce code fonctionne et est retourné à mon contrôleur (non null).

EDIT: Mon problème est que je ne peux pas obtenir une liste de sélection pour afficher de nouveau à mon contrôleur. Je voudrais envoyer les documents suivants de retour à mon contrôleur:

<select name="selectfrom" id="select-from" multiple size="5"> 
    <option value="String1">Item 1</option> 
    <option value="String2">Item 2</option> 
    <option value="String3">Item 3</option> 
    <option value="String4">Item 4</option> 
</select> 

Comment pourrais-je le faire de sorte que je puisse envoyer une liste de toutes les options (Chaîne1, String2, etc.) Accès à mon contrôleur? Je l'ai essayé ce qui suit:

Controller:

public ActionResult BasicIdentificationIndex(BasicIdentificationModel returndata,ICollection<String> AerialItems) 

Modèle:

public String AerialItems { get; set; } 

Vue:

<select name="AerialItems" id="select-to" multiple size="5"> 
     <option value="5">Item 5</option> 
     <option value="6">Item 6</option> 
     <option value="7">Item 7</option> 
    </select> 

Mais la L'élément retourné au contrôleur est toujours nul.

+0

Que voulez-vous dire "correctement renvoyé à mon contrôleur"? Le paramètre ints était-il rempli? Est-ce que votre objet 'returndata' a également une propriété' ints' à laquelle il aurait pu aller? – AaronLS

+0

Correctement comme dans non null. ints était en effet peuplé du code ci-dessus. Si je place ints à l'intérieur de returndata il est nul, donc je passais juste comme un second paramètre au lieu d'essayer de comprendre pourquoi il ne se lient pas à l'intérieur de mon objet. –

+0

Tant que la propriété dans la classe MyObject est une liste publique Ints {get; set;} ', alors elle * devrait * fonctionner. Je ne pense pas que vous en ayez besoin, mais * pourriez * avoir besoin d'ajouter le constructeur par défaut de MyObject 'Ints = new List ();' pour qu'il soit non nul, mais je ne m'en souviens pas avec certitude. tête. – AaronLS

Répondre

1

Vous devriez pouvoir simplement lier modèle retour à une collection de ints ...

Je suis un peu confus parce que cela semblait être copié à partir du poste de blog Haack sur le sujet ... Ce que vous avez énumérés devrait fonctionner, mais si ce n'est pas le cas, pourriez-vous inclure le reste de votre code?

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

+0

Désolé, je n'étais pas assez spécifique à ma question. Je l'ai mis à jour pour être plus clair sur ce que j'essaie de faire. Je fournissais cela comme un exemple de la façon dont je retournais une liste (qui venait du blog Haacks). –

1

figured it out. J'ai besoin d'utiliser Javascript pour sélectionner tous les éléments de la liste. Cela les affichera tous dans la collection.

+1

Si vous avez toujours besoin que le contenu de la liste soit POSTé, il est peut-être plus utile de les inclure en tant qu'éléments cachés dans votre formulaire. Si l'utilisateur doit pouvoir les désélectionner, présélectionnez-les en HTML ('selected =" selected "'), pas en JavaScript. – CodeCaster

+0

Sauf que l'utilisateur peut dynamiquement ajouter à cette liste est le problème. –

+0

Cela ne devrait pas être un problème, mais si cela fonctionne pour vous de cette façon, allez-y. – CodeCaster

Questions connexes