Sto lavorando a un'applicazione MVC in cui la classe Modello Item
ha un AvailableColours
come proprietà.Modello MVC con un elenco di oggetti come proprietà
AvailableColours
è un sottoinsieme definito dall'utente delle classi Colour
. Vorrei visualizzare tutte le istanze Colour
in un elenco di caselle di controllo e, quando inviato, AvailableColours
è un List<Colour>
contenente le classi selezionate Colour
.
Qual è il modo migliore per farlo in MVC?
Modifica: Il mio codice finora, anche se ritengo che questo non sia il modo più MVC-ish per farlo!
Modello
public class Item
{
public int ID { get; set; }
public List<Colour> AvailableColours { get; set; }
}
View
@model MyNamespace.Models.Item
@using MyNamespace.Models;
@{
ViewBag.Title = "Create";
var allColours = new List<Colour>(); //retrieved from database, but omitted for simplicity
}
<h2>Create New Item</h2>
@using (Html.BeginForm("Create", "Item", FormMethod.Post))
{
<div>
@Html.LabelFor(model => model.AvailableColours)
@foreach (var colour in allColours)
{
<input type="checkbox" name="colours" value="@colour.Description" />
}
</div>
<input type="submit" value="Submit" />
}
controller
[HttpPost]
public ActionResult Create(Item item, string[] colours)
{
try
{
foreach (var colour in colours)
{
item.AvailableColours.Add(GetColour(colour));//retrieves from database
return RedirectToAction("Index");
}
}
catch
{
return View();
}
}
Qual è il valore di 'Model.Items'? Vedi la mia modifica - Sto estraendo l'elenco completo dei colori dal database e consentendo all'utente di scegliere un sottoinsieme, che è memorizzato nella proprietà 'AvailableColours'. – PTuckley
@PTuckley Scusa, era un errore di battitura. La proprietà è 'AvailableColours'. L'ho anche adattato per adattarlo a ulteriori dettagli che non avevi incluso nella domanda in origine. – hutchonoid
Ho paura che questo non abbia ancora molto senso per me - di che tipo è il modello nella tua risposta? C'è un riferimento a 'Model.AvailableColours' nella dichiarazione di ciclo' for', ma un riferimento a 'Model [i] .ID' nel campo nascosto? – PTuckley