2016-08-03 11 views
0

Ich versuche, "RowCount" -Wert für Content-Type Field zu bekommen.2sxc: How-To Get "ContentType Felder"/Eingabe-Typ-spezifische/Eigenschaftswert

  • Mit meinem Code ich alle Anwendungs ​​Content-Types Liste kann
  • , als ich alle Felder mit grundlegenden Attribute auflisten können (Name, Etikett, Default ...)

Aber jetzt versuche ich, fast ganzer Tag für den Zugriff auf zusätzliche Eingabetypspezifische Wert, aber ohne Glück ...

Das mit Kommentaren mein aktueller Code ist, wo Ich mag zusätzliche Werte erhalten ..

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; 
} 

Antwort

0

Wenn Sie nicht foreach für AttributeDefinitions verwenden Sie alle Daten auf diese Weise erhalten können:

 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); 

Sie können staticName von Code in Frage kommen:

t.StaticName