2016-02-11 1 views
0

Я хочу получить доступ к выбранному значению (поле перечисления) в части содержимого, когда нажмите кнопку «Сохранить» в администраторе виджета. Как я могу это сделать в методе редактора?Содержимое области перечисления поля fom content часть в редакторе Метод Orchard

+0

Где вы хотите получить эту ценность? Что вы хотите с этим делать? – devqon

+0

Я хочу это: нажмите кнопку сохранения при создании пользовательского виджета. В методе редактора получите значение selected из поля Enumeration Attached in Migrations. В зависимости от выбранного значения я хочу делать вещи, но мне нужно знать, как получить это значение (Fields.EnumerationsFields.SelectedValue). –

ответ

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; 
Смежные вопросы