Buduję wewnętrzną stronę, która pozwala zaufanymużytkownicy mogą ręcznie zmienić ustawienia parametrów za pomocą formularza. Dane wejściowe do tej konfiguracji to lista parametrów konfiguracji (o nieznanym rozmiarze), każda z określoną listą wartości. Użytkownik może następnie wybrać wartość dla wszystkich lub podzbioru parametrów.
Próbowałem to zilustrować za pomocą mojego obecnego modelu widoku
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; }
}
Moja obecna próba renderowania widoku w tym celu:
<% 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>
<% } %>
...
Moje pytanie brzmi: jak mogę to renderować?pozwala mi przesłać formularz i uzyskać zrozumiały model z powrotem do mojej akcji formularza, która pozwoli mi uzyskać listę wybranych wartości parametrów. Nie znam tutaj najlepszych praktyk ani sztuczek, więc docenię wszelkie opinie, które otrzymam :)
Odpowiedzi:
4 dla odpowiedzi № 1Możesz spróbować użyć FormCollection:
public ActionResult Submit(FormCollection formCollection)
{
//Iterate form collection to get fields
return View();
}
0 dla odpowiedzi nr 2
Przydatny może być ten post autorstwa Phila Haacka: Wiązanie modelu z listą.
Pamiętaj też, że musisz przesłać z powrotem identyfikator (ParameterName
, na przykład) dla każdego parametru, aby można było określić, która wartość odpowiada parametrowi w kontrolerze.