Class ApiController
This is the base class for all custom API Controllers.
With this, your code receives the full context incl. the current App, DNN, Data, etc.
Inheritance
Namespace: ToSic.Sxc.Dnn
Assembly: ToSic.SexyContent.WebApi.dll
Syntax
[PublicApi_Stable_ForUseInYourCode]
public abstract class ApiController : DynamicApiController, IHttpController, IDisposable, IHasDynCodeContext, IDynamicWebApi, IDnnDynamicCode, IDynamicCode, ICreateInstance, ICompatibilityLevel, IHasLog, IDynamicCodeBeforeV10
Properties
| Improve this Doc View SourceApp
A fully prepared IApp object letting you access all the data and queries in the current app.
You'll usually want to access the data, like App.Data["Categories"]
or the queries App.Query["AllPosts"]
.
foreach(var cat in AsDynamic(App.Data["Categories"])) {
@cat.Name
}
Declaration
public IApp App { get; }
Property Value
Type | Description |
---|---|
IApp | The current app |
CmsContext
Declaration
public ICmsContext CmsContext { get; }
Property Value
Type | Description |
---|---|
ICmsContext |
Content
The content object of the current razor view - IF the current view has content. If the view is a list, it will return the first item. Will be null otherwise. To tell if it's the demo/default item, use IsDemoItem.
Declaration
public dynamic Content { get; }
Property Value
Type | Description |
---|---|
System.Object | A IDynamicEntity object with the current content - or null. |
Data
The data prepared for the current Code. Usually user data which was manually added to the instance, but can also be a query.
You'll usually want to access the "Default" stream like Data["Default"]
.
foreach(var person in AsDynamic(Data["Default"])) {
@person.Name
}
Declaration
public IBlockDataSource Data { get; }
Property Value
Type | Description |
---|---|
IBlockDataSource | An IBlockDataSource which is as IDataSource. |
Dnn
The DNN context.
Declaration
public IDnnContext Dnn { get; }
Property Value
Type | Description |
---|---|
IDnnContext | The DNN context. |
Edit
Helper commands to enable in-page editing functionality Use it to check if edit is enabled, generate context-json infos and provide toolbar buttons
Declaration
public IInPageEditingSystem Edit { get; }
Property Value
Type | Description |
---|---|
IInPageEditingSystem | An IInPageEditingSystem object. |
Header
The header object of the current razor view, if it's a list and has a header object. If it's a list and doesn't have a header (and no default), it will return null. To tell if it's the demo/default item, use IsDemoItem.
Declaration
public dynamic Header { get; }
Property Value
Type | Description |
---|---|
System.Object | A IDynamicEntity object with the current content. |
Remarks
Introduced in 2sxc 10.10 - previously it was called ListContent, now deprecated.
Link
Link helper object to create the correct links
Declaration
public ILinkHelper Link { get; }
Property Value
Type | Description |
---|---|
ILinkHelper | A ILinkHelper object. |
Methods
| Improve this Doc View SourceAsAdam(IEntity, String)
Provides an Adam instance for this item and field
Declaration
public IFolder AsAdam(IEntity entity, string fieldName)
Parameters
Type | Name | Description |
---|---|---|
IEntity | entity | The entity, often Content or similar |
System.String | fieldName | The field name, like "Gallery" or "Pics" |
Returns
Type | Description |
---|---|
IFolder | An Adam object for navigating the assets |
AsAdam(IDynamicEntity, String)
Provides an Adam instance for this item and field
Declaration
public IFolder AsAdam(IDynamicEntity entity, string fieldName)
Parameters
Type | Name | Description |
---|---|---|
IDynamicEntity | entity | The entity, often Content or similar |
System.String | fieldName | The field name, like "Gallery" or "Pics" |
Returns
Type | Description |
---|---|
IFolder | An Adam object for navigating the assets |
AsDynamic(Object)
Convert a dynamic entity and return itself again. This is so coders don't have to worry if the original object was an IEntity or a IDynamicEntity in the first place.
Declaration
public dynamic AsDynamic(dynamic dynamicEntity)
Parameters
Type | Name | Description |
---|---|---|
System.Object | dynamicEntity | the original object |
Returns
Type | Description |
---|---|
System.Object | a dynamic object for easier coding |
AsDynamic(String, String)
Take a json and provide it as a dynamic object to the code
Declaration
public dynamic AsDynamic(string json, string fallback = "{}")
Parameters
Type | Name | Description |
---|---|---|
System.String | json | the original json string |
System.String | fallback | Alternate string to use, if the original json can't parse. Can also be null or the word "error" if you would prefer an error to be thrown. |
Returns
Type | Description |
---|---|
System.Object | A dynamic object representing the original json. If it can't be parsed, it will parse the fallback, which by default is an empty empty dynamic object. If you provide null for the fallback, then you will get null back. |
Remarks
New in 2sxc 10.20
AsDynamic(IEntity)
Wraps an entity into a IDynamicEntity
Declaration
public dynamic AsDynamic(IEntity entity)
Parameters
Type | Name | Description |
---|---|---|
IEntity | entity | the original object |
Returns
Type | Description |
---|---|
System.Object | a dynamic object for easier coding |
AsEntity(Object)
Unwraps a dynamic entity back into the underlying IEntity
Declaration
public IEntity AsEntity(dynamic dynamicEntity)
Parameters
Type | Name | Description |
---|---|---|
System.Object | dynamicEntity | the wrapped IEntity |
Returns
Type | Description |
---|---|
IEntity | A normal IEntity |
AsList(Object)
Converts a list of IEntity objects into a list of IDynamicEntity objects.
Declaration
public IEnumerable<dynamic> AsList(dynamic list)
Parameters
Type | Name | Description |
---|---|---|
System.Object | list | typically a List/IEnumerable of Entities or DynamicEntities. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<System.Object> | a list of IDynamicEntity objects |
Remarks
Added in 2sxc 10.21.00
CreateSource<T>(IDataSource, ILookUpEngine)
Create a IDataSource which will process data from the given stream.
Declaration
public T CreateSource<T>(IDataSource inSource = null, ILookUpEngine configurationProvider = null)
where T : IDataSource
Parameters
Type | Name | Description |
---|---|---|
IDataSource | inSource | The data source which will be the default In of the new data-source. |
ILookUpEngine | configurationProvider | An alternate configuration provider for the DataSource |
Returns
Type | Description |
---|---|
T | A typed DataSource object |
Type Parameters
Name | Description |
---|---|
T | A data-source type - must be inherited from IDataSource |
CreateSource<T>(IDataStream)
Create a IDataSource which will process data from the given stream.
Declaration
public T CreateSource<T>(IDataStream inStream)
where T : IDataSource
Parameters
Type | Name | Description |
---|---|---|
IDataStream | inStream | The stream which will be the default In of the new data-source. |
Returns
Type | Description |
---|---|
T | A typed DataSource object |
Type Parameters
Name | Description |
---|---|
T | A data-source type - must be inherited from IDataSource |
SaveInAdam(String, Stream, String, String, Nullable<Guid>, String, String)
Save a file from a stream (usually an upload from the browser) into an adam-field
Declaration
public IFile SaveInAdam(string dontRelyOnParameterOrder = "all params must be named, like 'enable: true, language: ''de-ch''", Stream stream = null, string fileName = null, string contentType = null, Guid? guid = default(Guid? ), string field = null, string subFolder = "")
Parameters
Type | Name | Description |
---|---|---|
System.String | dontRelyOnParameterOrder | ensure that all parameters use names, so the api can change in future |
System.IO.Stream | stream | the stream |
System.String | fileName | file name to save to |
System.String | contentType | content-type of the target item (important for security checks) |
System.Nullable<System.Guid> | guid | |
System.String | field | |
System.String | subFolder |
Returns
Type | Description |
---|---|
IFile |