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 |
Lists | GetAsync, GetFieldsAsync, GetItemsAsync, GetItemAsync |
Libraries | GetAsync, GetFilesAsync, DownloadUrl |
Nodes | GetAsync, GetChildrenAsync |
Routes | NodeHrefAsync, ListItemHrefAsync |
Fields | FormatValue |
Права проверяются на сервере при каждом вызове API.
Шаблон проекта
cd backenddotnet new install ./templates/portal-webpartdotnet new portal-webpart -n MyWidget -o ../../packages/my-widgetПримеры: packages/webpart-examples/hello-widget, current-user-widget.
См. manifest.md — поле runtime: "dotnet", entry, entryType.