Visualizzazione degli elementi nella casella di riepilogo a discesa
-
12-12-2019 - |
Domanda
Sto cercando di visualizzare in una casella di riepilogo a discesa un elenco di "visite programmate" in base alle voci precedenti.Sono in grado di raccogliere le informazioni ma quando la visualizza la casella di riepilogo a discesa si trasforma in una casella di input e non delle mie informazioni che voglio vengono visualizzate.Il formato in cui vorrei che i miei articoli da visualizzare è il: 10/2/2012 - a scuola.
Ecco cosa ho per il mio codice:
È qui che raccolgo le informazioni della visita - data e posto
public JsonResult GetVisitDetails(Guid visitEntryId)
{
var model = new VisitDetailModel();
VisitEntry visitEntry = _visitEntryService.Get(visitEntryId);
if(visitEntry == null)
{
model.Message = string.Format(Message.NotFoundMessage, Resources.Entities.Visit.EntityName);
return Json(model);
}
model.VisitEntryId = visitEntryId;
model.VisitTypeId = visitEntry.VisitTypeId;
if (visitEntry.VisitType != null)
model.VisitType = visitEntry.VisitDate.ToShortDateString();
return Json(model);
}
#region Nested Type:VisitDetailModel
public class VisitDetailModel
{
public Guid VisitEntryId { get; set; }
public short VisitTypeId { get; set; }
public string VisitType { get; set; }
public string VisitDate { get; set; }
public string Message { get; set; }
}
#endregion
.
Questo è ciò che ho nel mio AddToViewModel:
var visits = _visitEntryService.FindAllForCase(viewModel.CaseId, _currentUser.OfficeId).Where(v=>v.VisitDate <= DateTime.Today.SetToMaximumTime()).OrderByDescending(v=>v.VisitDate).ToList();
visits.Insert(0, new VisitEntry());
viewModel.Visits = visits.ToSelectList("VisitEntryId", "Display", viewModel.VisitEntryId.ToString());
if(viewModel.VisitTypes.Count() == 0)
ModelState.AddModelError("",string.Format("No active {0} entered.", Kids.Resources.Entities.VisitType.EntityNamePlural));
.
La mia pagina .Ascx per mostrare a discesa:
<div class="row">
<%:Html.EditorFor(m=>m.VisitEntryId) %>
<%:Html.LabelFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>
.
My ViewModel:
[LocalizedDisplayName("VisitEntry", NameResourceType = typeof(VisitActivity))]
public short? VisitEntryId { get; set; }
[UIHint("DropDownList")]
[DropDownList(DropDownListTargetProperty = "VisitEntryId")]
public IEnumerable<SelectListItem> Visits { get; set; }
.
Qualche informazione del perché non sono in grado di visualizzare un DropDownList sarebbe utile.
Soluzione
Nel tuo ASCX stai facendo editorFOR su model.VisitEntryId
che è un int
Hai bisogno di un Html.DropDownFor
per un elenco a discesa.
Il tuo model.Visits
è una lista di selezione e immagino che dovresti fare:
<%:Html.LabelFor(m=>m.VisitEntryId) %>
<%:Html.EditorFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>
.