public override async Task <IDisplayResult> UpdateAsync(YoutubeField field, IUpdateModel updater, UpdateFieldEditorContext context) { EditYoutubeFieldViewModel model = new EditYoutubeFieldViewModel(); if (await updater.TryUpdateModelAsync(model, Prefix)) { var settings = context.PartFieldDefinition.GetSettings <YoutubeFieldSettings>(); if (settings.Required && String.IsNullOrWhiteSpace(model.RawAddress)) { updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["A value is required for '{0}'.", context.PartFieldDefinition.DisplayName()]); } else { if (model.RawAddress != null) { var uri = new Uri(model.RawAddress); // if it is a url with QueryString if (!String.IsNullOrWhiteSpace(uri.Query)) { var query = QueryHelpers.ParseQuery(uri.Query); if (query.ContainsKey("v")) { model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{query["v"]}"; } else { updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["The format of the url is invalid"]); } } else { var path = uri.AbsolutePath.Split('?')[0]; model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{path}"; } field.RawAddress = model.RawAddress; field.EmbeddedAddress = model.EmbeddedAddress; } else { field.RawAddress = null; field.EmbeddedAddress = null; } } } return(Edit(field, context)); }
public override async Task <IDisplayResult> UpdateAsync(YoutubeField field, IUpdateModel updater, UpdateFieldEditorContext context) { EditYoutubeFieldViewModel model = new EditYoutubeFieldViewModel(); await updater.TryUpdateModelAsync(model, Prefix); if (string.IsNullOrEmpty(model.RawAddress)) { return(Edit(field, context)); } var uri = new Uri(model.RawAddress); // if it is a url with QueryString if (!string.IsNullOrWhiteSpace(uri.Query)) { var query = QueryHelpers.ParseQuery(uri.Query); if (query.ContainsKey("v")) { model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{query["v"]}"; } else { updater.ModelState.AddModelError(Prefix + "." + nameof(model.RawAddress), "The url format is not correct"); } } else { string path = uri.AbsolutePath.Split('?')[0]; model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{path}"; } field.RawAddress = model.RawAddress; field.EmbeddedAddress = model.EmbeddedAddress; return(Edit(field, context)); }