public async Task <IViewComponentResult> InvokeAsync(EntityDropDownViewModel model) { if (model == null) { model = new EntityDropDownViewModel(); } model.Entities = await BuildSelectionsAsync(model); return(View(model)); }
public override async Task <IViewProviderResult> BuildEditAsync(Doc doc, IViewProviderContext updater) { // Get feature var feature = await _featureFacade.GetFeatureByIdAsync("Plato.Docs"); if (feature == null) { throw new Exception("The feature Plato.Docs could not be found"); } // Ensures we persist the message between post backs var message = doc.Message; if (_request.Method == "POST") { foreach (string key in _request.Form.Keys) { if (key == EditorHtmlName) { message = _request.Form[key]; } } } // Build general model var viewModel = new EditEntityViewModel() { Id = doc.Id, Title = doc.Title, Message = message, EditorHtmlName = EditorHtmlName, Alias = doc.Alias }; // Build drop down model var entityDropDownViewModel = new EntityDropDownViewModel() { Options = new EntityIndexOptions() { FeatureId = feature.Id, CategoryId = doc.CategoryId }, HtmlName = ParentHtmlName, SelectedEntity = doc?.ParentId ?? 0 }; // Build view return(Views( View <EditEntityViewModel>("Home.Edit.Header", model => viewModel).Zone("header"), View <EditEntityViewModel>("Home.Edit.Content", model => viewModel).Zone("content"), View <EntityDropDownViewModel>("Home.Edit.Sidebar", model => entityDropDownViewModel).Zone("sidebar"), View <EditEntityViewModel>("Home.Edit.Footer", model => viewModel).Zone("Footer") )); }
private async Task <IList <Selection <Entity> > > BuildSelectionsAsync(EntityDropDownViewModel model) { if (model.Options.FeatureId == null) { throw new ArgumentNullException(nameof(model.Options.FeatureId)); } var entities = await _entityStore.GetByFeatureIdAsync(model.Options.FeatureId.Value); var selections = entities?.Select(e => new Selection <Entity> { IsSelected = model.SelectedEntity.Equals(e.Id), Value = e }) .ToList(); return(selections); }