Blazor 5x - قسمت 20 - کار با فرمها - بخش 8 - استفاده از یک کامپوننت ثالث HTML Editor
نویسنده: وحید نصیری
تاریخ: ۱۳۹۹/۱۲/۲۶ ۱۴:۵۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
dotnet add package Blazored.TextEditor
libman install quill --provider unpkg --destination wwwroot/lib/quill
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BlazorServer.App</title>
<base href="~/" />
<link href="lib/quill/dist/quill.snow.css" rel="stylesheet" />
<link href="lib/quill/dist/quill.bubble.css" rel="stylesheet" /> <script src="lib/quill/dist/quill.min.js"></script> <script src="_content/Blazored.TextEditor/quill-blot-formatter.min.js"></script> <script src="_content/Blazored.TextEditor/Blazored-BlazorQuill.js"></script> <script src="_framework/blazor.server.js"></script> </body>
@using Blazored.TextEditor
<div class="form-group">
<label>Details</label>
@*<InputTextArea @bind-Value="HotelRoomModel.Details" class="form-control"></InputTextArea>*@
<BlazoredTextEditor @ref="@QuillHtml">
<ToolbarContent>
<select class="ql-header">
<option selected=""></option>
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
</select>
<span class="ql-formats">
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
</span>
<span class="ql-formats">
<select class="ql-color"></select>
<select class="ql-background"></select>
</span>
<span class="ql-formats">
<button class="ql-list" value="ordered"></button>
<button class="ql-list" value="bullet"></button>
</span>
<span class="ql-formats">
<button class="ql-link"></button>
</span>
</ToolbarContent>
<EditorContent>
</EditorContent>
</BlazoredTextEditor>
</div> <BlazoredTextEditor @ref="@QuillHtml">
@code
{
private BlazoredTextEditor QuillHtml;
<div class="form-group pb-4" style="height:250px;">
<label>Details</label>
<BlazoredTextEditor @ref="@QuillHtml" Placeholder="Please enter the room's detail"> private async Task SetHTMLAsync()
{
if(!string.IsNullOrEmpty(HotelRoomModel.Details))
{
await QuillHtml.LoadHTMLContent(HotelRoomModel.Details);
}
} protected override async Task OnInitializedAsync()
{
if (Id.HasValue)
{
// Update Mode
Title = "Update";
HotelRoomModel = await HotelRoomService.GetHotelRoomAsync(Id.Value);
await SetHTMLAsync();
}
// ...
} private async Task HandleHotelRoomUpsert()
{
// ...
// Create Mode
HotelRoomModel.Details = await QuillHtml.GetHTML();
// ...
} protected override async Task OnAfterRenderAsync(bool firstRender)
{
await SetHTMLAsync();
} private async Task SetHTMLAsync()
{
if(!string.IsNullOrEmpty(HotelRoomModel.Details))
{
await QuillHtml.LoadHTMLContent(HotelRoomModel.Details);
StateHasChanged();
}
} protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender)
{
return;
}
while (true)
{
try
{
await SetHTMLAsync();
break;
}
catch
{
await Task.Delay(100); // Quill needs some time to load
}
}
} @((MarkupString)@HotelRoomModel.Details)