/ / ASP.NET MVC per la gestione di un numero sconosciuto di input: asp.net-mvc, forms, viewmodel

Modulo ASP.NET MVC che gestisce un numero sconosciuto di input - asp.net-mvc, forms, viewmodel

Sto costruendo una pagina interna che consenta fiduciaagli utenti di modificare manualmente l'impostazione di un parametro tramite un modulo. Gli input per questa configurazione sono un elenco di setupparameters (di dimensione sconosciuta), ciascuno con un elenco specifico di valori. L'utente può quindi selezionare un valore per tutti o un sottoinsieme dei parametri.

Ho tentato di illustrare questo con il mio attuale modello per la vista

    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; }
}

Il mio attuale tentativo di rendere una vista per questo:

<% 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>

<% } %>
...

La mia domanda è come posso renderizzare una vista chemi consente di inviare il modulo e ottenere un modello ragionevolmente comprensibile di nuovo alla mia azione del modulo che mi consentirà di ottenere l'elenco dei valori dei parametri selezionati. Non sono a conoscenza delle migliori pratiche o dei trucchi qui, quindi apprezzerò qualsiasi feedback ricevo :)

risposte:

4 per risposta № 1

Potresti provare a usare a FormCollection:

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

return View();
}

0 per risposta № 2

Potresti trovare utile questo post di Phil Haack: Binding del modello a un elenco.

Tieni inoltre presente che dovrai inviare un identificatore (ParameterName, ad esempio) anche per ogni parametro, in modo da poter identificare quale valore corrisponde a un parametro nel controller.