Как я могу рендерить Javascript на стороне сервера Blazor? - PullRequest
0 голосов
/ 12 октября 2019

Мне нужно использовать библиотеку javascript в серверном проекте Blazor.

Библиотека используется для подключения к приложению. Его нужно инициализировать, получив токен доступа с методом get в серверной части.

Теперь метод get может успешно получить токен доступа, и следующим шагом будет его инициализация в конце шрифта для инициализации. библиотека.

Тем не менее, я хочу добавить code блок в _Host.cshtml, но, похоже, не поддерживает вообще.

enter image description here

А затем я попытался изменить код и блок script на index.cshtml. Что ж, теперь он сообщает, что блок script еще не будет отображаться на веб-странице.

enter image description here

Как я могу решить эту проблему? Не могли бы вы помочь мне? Спасибо.


Blazor отличается от исходного ядра asp.net, у которого нет метода Rendersection.

Вот еще один вопрос по этому поводу: @ RenderSection Эквивалентен вBlazor

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Вы можете добавить только JavaScript за пределами Компонентов Blazor. Вы можете добавить их в ваш index.html или _Host.cshtml. Все ваши внешние функции будут там, или в компонентах dll. Из Blazor вы можете просто вызывать эти функции и передавать результаты

0 голосов
/ 13 октября 2019

Я нашел другой способ добиться этого:Вот js:

window.TestFunctions = {
    InvokeAlert: function (AlertString) {
        alert(AlertString);
    }
};

А вот код Blazor:

protected override void OnInitialized()
    {
        Task.Run(() =>
        {
            var request = new HttpRequestMessage(HttpMethod.Get,
                string.Format(NavigationManager.Uri+"Callback/JSInitialise"));

            var client = _clientFactory.CreateClient();
            var response = client.SendAsync(request);

            while (true)
            {
                if (!string.IsNullOrEmpty(_SignatureModel.signature))
                {
                    JSRuntime.InvokeVoidAsync("TestFunctions.InvokeAlert", _SignatureModel.signature);
                    break;
                }
                Task.Delay(200);
            }
        });
    }

Ну, теперь это работает.

...