Elemente im Dropdown-Listenfeld anzeigen
-
12-12-2019 - |
Frage
Ich versuche, in einem Dropdown-Listenfeld eine Liste der „geplanten Besuche“ basierend auf vorherigen Einträgen anzuzeigen.Ich kann die Informationen sammeln, aber wenn ich sie anzeige, verwandelt sich das Dropdown-Listenfeld in ein Eingabefeld und es werden keine meiner gewünschten Informationen angezeigt.Das Format, in dem meine Artikel angezeigt werden sollen, ist:02.10.2012 – In der Schule.
Folgendes habe ich für meinen Code:
Hier sammle ich die Informationen zum Besuch – Datum und Ort
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
Das ist, was ich in meinem AddToViewModel habe:
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));
Meine .ascx-Seite zum Anzeigen des Dropdown-Menüs:
<div class="row">
<%:Html.EditorFor(m=>m.VisitEntryId) %>
<%:Html.LabelFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>
Mein ViewModel:
[LocalizedDisplayName("VisitEntry", NameResourceType = typeof(VisitActivity))]
public short? VisitEntryId { get; set; }
[UIHint("DropDownList")]
[DropDownList(DropDownListTargetProperty = "VisitEntryId")]
public IEnumerable<SelectListItem> Visits { get; set; }
Jede Information darüber, warum ich keine Dropdown-Liste anzeigen kann, wäre hilfreich.
Lösung
In Ihrem ASCX führen Sie EditorFor aus model.VisitEntryId
Das ist ein int
Du brauchst ein Html.DropDownFor
für eine Dropdown-Liste.
Dein model.Visits
ist eine SelectList und ich vermute, Sie sollten Folgendes tun:
<%:Html.LabelFor(m=>m.VisitEntryId) %>
<%:Html.EditorFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>