Я создаю компонент бритвы для использования в клиентском приложении Blazor. Мне интересно, как я могу сделать изображения, используемые в компоненте, динамическими c, и установить изображения в кодовом блоке страницы, где я вызываю компонент.
Вот мой компонент Carousel.razor
@inject IJSRuntime JsRuntime
@namespace BlazorFrontend.Components
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1" ></li>
<li data-target="#carouselExampleIndicators" data-slide-to="2" ></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img class="d-block w-100" src="pictures/foo.jpg" alt="First slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="pictures/bar.jpg" alt="Second slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="pictures/foobar.jpg" alt="Third slide">
</div>
</div>
<a class="carousel-control-prev" role="button" id="carouselExampleIndicators-prev" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" id="carouselExampleIndicators-next" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
@code{
protected override async Task OnInitializedAsync()
{
foreach (System.Collections.DictionaryEntry de in Environment.GetEnvironmentVariables())
{
System.Console.WriteLine("ENVVAR: key=" + de.Key + " value=" + de.Value);
System.Console.WriteLine(Environment.GetEnvironmentVariable("ASSETS"));
}
}
private string AssetsEndpoint = Environment.GetEnvironmentVariable("ASSETS");
bool firstRender = true;
protected async override Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await JsRuntime.InvokeAsync<object>("initializeCarousel");
firstRender = false;
}
}
}
В идеале я хотел бы сделать что-то вроде этого:
<img class="d-block w-100" src=@slide1 alt="First slide">
code{
string slide1;
}
и в блоке кода страницы я использую компонент в:
<Carousel></Carousel>
code{
slide1 = "pictures/foo.jpg"
}
Например, но, конечно, это не сработает. Как правильно / Blazor способ сделать это?