В моем представлении Razor я вызываю частичное представление с Fetch API, и это прекрасно работает:
<script>
window.onload = async function () {
await fetch('http://localhost:53801/Home/VesselPartial')
.then((response) => { return response.text(); })
.then((result) => {
document.getElementById('loadVessel').innerHTML = result;
document.getElementById('loader').style.display = 'none';
document.getElementById('loadVessel').style.display = 'block';
});
};
</script>
Он выполняет частичный бэкэнд в контроллере и отображает частичное представление. Проблема возникает, когда я хочу выполнить JavaScript, отвечающий за HTML элементы из частичного представления. Как я уже заметил, я не могу выполнить любой <script>
из моего частичного cs html. Также помощники, вызванные из _Layout.cshtml
, не помогают, если DisplayPartial
равно async
. Я пытаюсь выяснить, как вызвать ViewComponent после моего вызова Fetch, потому что в ViewComponent у меня есть JavaScripts. В приведенном ниже коде ViewComponent, к сожалению, выполняется до того, как DisplayPartial
завершил свою бэкэнд-работу.
<script>
window.onload = async function () {
await fetch('http://localhost:53801/Home/VesselPartial')
.then((response) => { return response.text(); })
.then((result) => {
document.getElementById('loadVessel').innerHTML = result;
document.getElementById('loader').style.display = 'none';
document.getElementById('loadVessel').style.display = 'block';
});
@await Component.InvokeAsync(nameof(VesselDetailsScripts))
};
</script>
Как заставить Component.InvokeAsync
ждать, пока Fetch API result
будет готов? Я уже несколько часов бьюсь с этим ...