Blazor 앱에서 문자열을 강조 표시
4506 단어 BlazorASP.NET_Core

개발 환경
Windows10
Visual Studio 2019 미리보기
.Net Core 3.1
MarkupString에서 html 코드 생성
Blazor 클라이언트 앱의 기본 프로젝트인
FetchData.razor에서 Summary를 강조 표시합니다.입력 영역에서 텍스트를 입력하고 Enter 키를 누르면 바인딩된 변수가 평가되고 입력된 문자열을 강조 표시합니다.
C#의 코드에서 html 코드를 생성할 때는
string 형이면 html 태그가 그대로 표시되어 버리므로 MarkupString 형으로 해 줍니다.FetchData.razor
@page "/fetchdata"
@inject HttpClient Http
<h1>Weather forecast</h1>
<p>This component demonstrates fetching data from the server.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date</th>
<th>Temp. (C)</th>
<th>Temp. (F)</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
@*Summaryをハイライトする*@
<td>@(WrapHighlight(@forecast.Summary,HighlightString))</td>
</tr>
}
</tbody>
</table>
//ハイライトする文字を入力
<p>
Highlight:
<input type="text" @bind-value=@HighlightString />
</p>
}
@code {
// ハイライトのバインド用変数を用意
private string HighlightString = "";
// ハイライト用のhtmlを作成する
// 文字をハイライトするタグをつけているだけ
MarkupString WrapHighlight(string str,string keyword)
{
var ret = str;
if(str.IndexOf(keyword) != -1)
{
var start_index = str.IndexOf(keyword);
var skip_index = start_index + keyword.Length;
ret = string.Format("{0}<span style=\"background: linear-gradient(transparent 0%, #ffff66 0%)\">{1}</span>{2}",
str.Substring(0, start_index),
keyword,
str.Substring(skip_index)
);
}
return (MarkupString)ret;
}
private WeatherForecast[] forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await Http.GetJsonAsync<WeatherForecast[]>("sample-data/weather.json");
}
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
}
Reference
이 문제에 관하여(Blazor 앱에서 문자열을 강조 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kimuradesu/items/93c855317fb636a02334텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)