2016-02-11 59 views
0

我想要在小部件管理員中單擊提交保存按鈕時訪問內容部分中的selectedvalue(枚舉字段)。我如何在編輯器方法中做到這一點?編輯器方法中的訪問值枚舉字段fom內容部分Orchard

+0

你想要哪個價值?你想用它做什麼? – devqon

+0

我想要這個:創建自定義小部件時點擊保存按鈕。在編輯器方法中,從遷移文件中附加的枚舉字段中獲取de selectedvalue。根據選擇的值我想做的東西,但我需要知道如何獲得該值(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;