2016-08-03 3 views
0

Я пытаюсь получить значение «RowCount» для поля Content-Type.2sxc: Как получить «поля ContentType»/значение типа ввода/значение свойства

  • С моим кодом я могу перечислить все приложения-тип
  • Чем я могу перечислить все поля с основными атрибутами (имя, Label, DefaultValue ...)

Но теперь я пытаюсь почти полный рабочий день, чтобы получить доступ к дополнительным конкретных значений входного типа, но не повезло ...

Это мой текущий код с комментариями, где я хотел, чтобы получить дополнительные значения ..

public string GetTablesAndFields(){ 
    var cache = ToSic.Eav.DataSource.GetCache(null, App.AppId) as ToSic.Eav.DataSources.Caches.BaseCache; 
    var allTypes = cache.GetContentTypes().Select(t => t.Value); 
    var appTypes = allTypes.Where(t => t.Scope == "2SexyContent").ToList(); 

    var zoneId=(int)ToSic.SexyContent.Internal.ZoneHelpers.GetZoneID(Dnn.Module.PortalID); 
    var metaDataSource = ToSic.Eav.DataSource.GetMetaDataSource(zoneId, App.AppId); 

    var code =""; 
    foreach(ToSic.Eav.Data.ContentType t in appTypes){ 
     code = code + t.Name + " | " + t.Scope + " | fields : " + t.AttributeDefinitions.Count + "<br/>"; 
     foreach(var a in t.AttributeDefinitions){ 
      var f = GetFieldMetadata(metaDataSource, a.Key); 

      code += "<hr><pre>"; 
      code += "# Name    #" + a.Value.Name + "<br/>"; 
      code += "# Name Label   #" + f.Title[0] + "<br/>"; 
      code += "# Visible in Edit UI #" + f.Attributes["VisibleInEditUI"][0] + "<br/>"; 
      code += "# Default value  #" + f.Attributes["DefaultValue"][0] + "<br/>"; 
      code += "# Required   #" + f.Attributes["Required"][0] + "<br/>"; 
      code += "# Disabled   #" + f.Attributes["Disabled"][0] + "<br/>"; 
      code += "# Input Type   #" + f.Attributes["InputType"][0] + "<br/>"; 
      code += "# Notes    #" + f.Attributes["Notes"][0] + "<br/>"; 
      code += "# Validation   #" + f.Attributes["ValidationRegExJavaScript"][0] + "<br/>"; 
      code += "</pre><hr>"; 

      // How to access "RowCount" or other InputType specific values? 
     } 
    } 
    return code; 
} 

ответ

0

Если вы не используете Еогеасп для AttributeDefinitions вы можете получить все данные, которые так:

 ToSic.Eav.WebApi.ContentTypeController eavCtc; 
     eavCtc = new ToSic.Eav.WebApi.ContentTypeController(); 
     eavCtc.SetUser(ToSic.SexyContent.Environment.Dnn7.UserIdentity.CurrentUserIdentityToken); 
     var fields = eavCtc.GetFields(App.AppId, staticName); 

Вы можете получить staticName из кода в вопросе:

t.StaticName 
Смежные вопросы