Lista de selección de MVC y Entity Framework
Tengo una aplicación MVC que estoy tratando de armar y requiere algunas listas de selección y listas desplegables.
Por lo tanto, tengo los siguientes modelos ...
public class Task
{
public int ID { get; set; }
public string Title { get; set; }
......
public virtual ICollection<Monitor> Monitors { get; set; }
public virtual ICollection<Resource> Resources { get; set; }
}
public class Monitor
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public IList<Task> Tasks { get; set; }
}
public class Resource
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
.....
public IList<Task> Tasks { get; set; }
La parte interesante es que cuando muestro una lista de tareas, entre otras propiedades que se muestran bien, necesito mostrar una lista de 'Monitores' y una lista de 'Recursos' asignados a la tarea en la vista de índice que se muestra abajo.
@model IEnumerable<ResourceManager.Models.Task>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
.....
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
.....
<th>
@Html.DisplayNameFor(model => model.Monitors)
</th>
<th>
@Html.DisplayNameFor(model => model.Resources)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
.....
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
.....
<td>
@if (item.Monitors == null || item.Monitors.Count == 0)
{<span>No Monitors Assigned</span>}
else
{ string.Join(", ", item.Monitors.Select(m => string.Format("{0} {1}", m.FirstName, m.LastName))); }
</td>
<td>
@Html.DisplayFor(modelItem => item.Resources)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
Y aquí está el controlador ...
public ActionResult Index()
{
var tasks = from t in db.Tasks where t.IsActive == true select t;
return View(tasks);
}
Me gustaría que la lista de monitores y la lista de recursos se muestren como una cadena en las vistas de índice, eliminación y detalles, es decir, 'Monitor 1, Monitor 2, Monitor 3' y 'Recurso 1, Recurso 2, Recurso 3'.
Sin embargo, en las otras vistas (Crear y Editar), quiero que aparezcan como una lista seleccionable.