2017-08-02 123 views

回答

3

默认下拉不支持默认值

没有达到你想要

  1. 创建自己的下拉菜单的数据类型(什么的双向或使用别人所做的插件 - 我不确定哪一个支持它,但也许看看nuPickers

  2. 使用Web API处理器拦截获取内容价值的呼唤 - 并设置默认值,你的财产,如果它为空(NULL)

下面

是一些未测试的代码:

首先将创建Web API处理器

public class SetDropdownDefaultHandler : DelegatingHandler 
{ 
    protected override async Task<HttpResponseMessage> SendAsync 
      (HttpRequestMessage request, CancellationToken cancellationToken) 
    { 
     var response = await base.SendAsync(request, cancellationToken); 

     var url = request?.RequestUri?.AbsolutePath.ToLower; 

     // only process when a create (getempty) or editing a specific content (getbyid) 
     if (url == "/umbraco/backoffice/umbracoapi/content/getempty" 
      || url == "/umbraco/backoffice/umbracoapi/content/getbyid") 
     { 
      var content = (ObjectContent)response.Content; 
      var data = content?.Value as PagedResult<ContentItemBasic<ContentPropertyBasic, IContent>>; 

      if (data?.Items != null) 
      { 
       var tempResult = data?.Items?.ToList(); 

       foreach (var item in tempResult) 
       { 
        foreach (var prop in item?.Properties?.Where(p => p?.Editor == "Umbraco.DropDown")) 
        { 
         var propStr = prop.Value?.ToString(); 
         if (!propStr.IsNullOrWhiteSpace()) 
         { 
          // set your default value if it is empty 
          prop.Value = "your default option prevalue id"; 
         } 
        } 
       } 

       data.Items = tempResult; 
      } 
     } 

     return response; 
    } 
} 

然后在开始的活动,其注册

public class UmbracoEvent : ApplicationEventHandler 
{ 
    protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) 
    { 
    GlobalConfiguration.Configuration.MessageHandlers.Add(new SetDropdownDefaultHandler()); 
    } 
} 

您的问题,也许你不知道你的prevalueid - 你可以看看它在分贝或者你可以使用的数据类型的服务来获取数据类型prevalues然后决定哪些把默认

相关问题