Перейти к содержимому

SDK (Portal.WebPart.Sdk)

SDK (Portal.WebPart.Sdk)

C# SDK для серверного рендеринга WebPart (hybrid SSR). Контракт: backend/src/Portal.WebPart.Sdk/IWebPart.cs.

Подробное руководство с примерами UI, data-wp-action и работы с API: Интерфейс, контролы и API.

Интерфейс WebPart

using Portal.WebPart.Sdk;
public sealed class TasksWidgetWebPart : IWebPart
{
public async Task<WebPartResult> RenderAsync(IWebPartContext ctx, CancellationToken cancellationToken = default)
{
var listId = ctx.Properties.GetGuid("listId");
var items = await ctx.Lists.GetItemsAsync(listId, limit: ctx.Properties.GetInt32("pageSize", 10), ct: cancellationToken);
var html = "<ul>" + string.Join("", items.Select(i => $"<li>{i.GetProperty("id")}</li>")) + "</ul>";
return new WebPartResult(html);
}
public Task<WebPartResult> HandleActionAsync(string action, JsonElement data, IWebPartContext ctx, CancellationToken ct = default)
=> Task.FromResult(new WebPartResult(""));
}

IWebPartContext

NamespaceМетоды
User, NodeId, PropertiesКонтекст страницы и свойства из Property Pane
ListsGetAsync, GetFieldsAsync, GetItemsAsync, GetItemAsync
LibrariesGetAsync, GetFilesAsync, DownloadUrl
NodesGetAsync, GetChildrenAsync
RoutesNodeHrefAsync, ListItemHrefAsync
FieldsFormatValue

Права проверяются на сервере при каждом вызове API.

Шаблон проекта

Окно терминала
cd backend
dotnet new install ./templates/portal-webpart
dotnet new portal-webpart -n MyWidget -o ../../packages/my-widget

Примеры: packages/webpart-examples/hello-widget, current-user-widget.

См. manifest.md — поле runtime: "dotnet", entry, entryType.