Я хочу получить доступ к выбранному значению (поле перечисления) в части содержимого, когда нажмите кнопку «Сохранить» в администраторе виджета. Как я могу это сделать в методе редактора?Содержимое области перечисления поля fom content часть в редакторе Метод Orchard
0
A
ответ
0
Если вы знаете имя ContentPart, который имеет это поле, вы можете сделать это следующим образом:
(dynamic)contentItem.ContentPartName.FieldName.SelectedValue
Но если вы не знаете имя ContentPart, вы можете сначала использовать это, чтобы получить все поля элемента содержимого во время выполнения:
using System.Runtime.CompilerServices;
using Microsoft.CSharp.RuntimeBinder;
// get all the fields from the contentItem without knowing part name
var callSite = CallSite<Func<CallSite, object, object>>
.Create(Binder.GetMember(0, contentItem.ContentType,
((dynamic)contentItem).GetType(), new[] { CSharpArgumentInfo.Create(0, null) }));
var contentItemFields = ((callSite.Target(callSite, ((dynamic)contentItem))).Fields) as List<ContentField>;
Имея список полей, теперь вы можете осуществлять поиск по EnumerationField, что вы хотите, и получить выбранное значение:
var yourField = (contentItemFields.FirstOrDefault(f => f.name == "YourField")) as EnumerationField;
var selectedValue = yourField.SelectedValue;
Где вы хотите получить эту ценность? Что вы хотите с этим делать? – devqon
Я хочу это: нажмите кнопку сохранения при создании пользовательского виджета. В методе редактора получите значение selected из поля Enumeration Attached in Migrations. В зависимости от выбранного значения я хочу делать вещи, но мне нужно знать, как получить это значение (Fields.EnumerationsFields.SelectedValue). –