2017-02-03 1 views
0

Ich versuche derzeit, Daten von Kentico mit einer C# -Web-API zu ziehen, und ich kann die Daten erfolgreich ziehen, aber ich plane auch, es in einer Datenbank zu speichern.GET API Request - Formular Datentypen

einen Anruf mit wie: /rest/bizformitem.bizform.contactus

erhalte ich alle Daten in der Form zurück, aber da ich diese Werte in die Datenbank am Speicherung würde Ich mag die Felddatentyp für das Formular Name/Wert kennen . Die meisten API-Referenzen haben Listen wie: ID:USER_ID | Type:int | Desc:User ID Form Field.

Ich versuche, eine Referenz über die API oder Dokumentation für diese Werte innerhalb des Formulars zu finden, so dass jede Unterstützung geschätzt werden würde.

Antwort

1

Sie sollten in der CMS_Class-Datenbanktabelle suchen. Finden Sie Ihre Klasse, dann gibt es das ClassFormDefinition-Feld, es hat XML, das alle Felder mit den Typen anzeigt.

Legen Sie das XML in ein XmlDocument, dann Select für // Feld [@ column = "YourColumnName"], ist eine Probe des XML

<field column="CultureName" visible="true" columntype="text" fieldtype="CustomUserControl" system="true" columnsize="200" publicfield="false" guid="7b7c2f84-da09-4874-aade-a4d3b77b975d"> 

Jetzt beachten, die Column sind Art von Kentico spezifischen Benennen Sie, also müssen Sie einen Schalter tun, um es in .Net-Klassen oder SQL-Datenbank Einsen umzuwandeln.

switch (fieldType) 
     { 
      case "longtext": 
      case "text": 
      default: 
       dt.Columns.Add(fieldName, typeof(string)); 
       break; 
      case "binary": 
       dt.Columns.Add(fieldName, typeof(byte[])); 
       break; 
      case "boolean": 
       dt.Columns.Add(fieldName, typeof(Boolean)); 
       break; 
      case "date": 
       dt.Columns.Add(fieldName, typeof(DateTime)); 
       break; 
      case "datetime": 
       dt.Columns.Add(fieldName, typeof(DateTime)); 
       break; 
      case "decimal": 
       dt.Columns.Add(fieldName, typeof(Decimal)); 
       break; 
      case "double": 
       dt.Columns.Add(fieldName, typeof(Double)); 
       break; 
      case "integer": 
       dt.Columns.Add(fieldName, typeof(Int32)); 
       break; 
      case "longinteger": 
       dt.Columns.Add(fieldName, typeof(Int64)); 
       break; 
      case "timespan": 
       dt.Columns.Add(fieldName, typeof(TimeSpan)); 
       break; 
      case "guid": 
       dt.Columns.Add(fieldName, typeof(Guid)); 
       break; 
     } 
+0

Ist die CMS_Class-Datenbanktabelle über die REST-API zugänglich? – confusedandamused

+0

Ja, Sie können die Daten über '/ rest/cms..class/all 'bekommen – rocky

+0

@rocky Gibt es einen Grund, wenn Sie' /rest/cms.form/all oder /rest/cms.class/all' versuchen, bekomme ich eine 403 Fehler? – confusedandamused