2010-12-08 53 views
3

Je crée une page interne qui permet aux utilisateurs de confiance de modifier manuellement une configuration de paramètre via un formulaire. Les entrées de cette configuration sont une liste de setupparameters (de taille inconnue), chacune avec une liste spécifique de valeurs. L'utilisateur peut alors sélectionner une valeur pour tout ou un sous-ensemble des paramètres.Formulaire ASP.NET MVC traitant un nombre inconnu d'entrées

J'ai essayé d'illustrer cela avec mon modèle actuel pour la vue

public class SetupModel 
    { 
     public List<SetupParameter> Parameters { get; set; } 
    } 

    public class SetupParameter 
    { 
     public string ParameterName { get; set; } 

     // list with text=paramvalue, value=paramvalueid 
     public SelectList ParameterValueList { get; set; } 
     // id of the selected parametervalue if any 
     public int? SelectedParameterValueID { get; set; } 
    } 

Ma tentative actuelle à rendre une vue pour cela:

<% using (Html.BeginForm("Update", "Parameters") {%> 
... 
<% foreach(var parameter in Model.Parameters) { %> 
      <div><%: parameter.ParameterName %></div> 
      <div><%: Html.DropDownListFor(x => parameter.SelectedParameterValueID, parameter.ParameterValueList, "Please select") %></div> 

<% } %> 
... 

Ma question est de savoir comment puis-je rendre une vue cela me permet de soumettre le formulaire et de ramener un modèle raisonnablement compréhensible à mon action de formulaire qui me permettra d'obtenir la liste des valeurs de paramètres sélectionnés. Je ne suis pas au courant des meilleures pratiques ou des trucs ici, donc je vais apprécier tous les commentaires que je reçois :)

Répondre

4

Vous pouvez essayer d'utiliser un FormCollection:

public ActionResult Submit(FormCollection formCollection) 
{ 
    //Iterate form collection to get fields 

    return View(); 
} 
0

Vous pourriez trouver ce post par Phil Haack utile : Model Binding To A List.

Notez également que vous devrez également renvoyer un identifiant (ParameterName, par exemple) pour chaque paramètre, afin de pouvoir identifier quelle valeur correspond à un paramètre dans le contrôleur.