@page "/exam/create" @using TechHelper.Client.Services @using Blazored.TextEditor @using Entities.DTO @using TechHelper.Client.Exam @inject ILogger Logger @inject ISnackbar Snackbar; @using Microsoft.AspNetCore.Components @using System.Globalization; @using TechHelper.Client.Pages.Editor @if (_edit) { } else { 配置 ParseExam } @code { [CascadingParameter] private Task authenticationStateTask { get; set; } private AssignmentQuestionDto selectedAssignmentQuestion = new AssignmentQuestionDto(); private bool _open = false; private bool _edit = false; private void ToggleDrawer() { _open = !_open; _edit = false; } private BlazoredTextEditor _textEditor = new BlazoredTextEditor(); private ExamPaper _parsedExam = new ExamPaper(); private AssignmentDto ExamContent = new AssignmentDto(); private ExamParserConfig _examParserConfig { get; set; } = new ExamParserConfig(); private void HandleClickedStruct(AssignmentQuestionDto dto) { _open = true; _edit = true; selectedAssignmentQuestion = dto; StateHasChanged(); } private async Task ParseExam() { var plainText = await _textEditor.GetText(); if (!string.IsNullOrWhiteSpace(plainText)) { try { var exampar = new ExamParser(_examParserConfig); _parsedExam = exampar.ParseExamPaper(plainText); Snackbar.Add("试卷解析成功。", Severity.Success); Snackbar.Add($"{_parsedExam.Errors}。", Severity.Success); ExamContent = _parsedExam.ConvertToExamDTO(); // ExamContent.SeqIndex(); } catch (Exception ex) { Console.WriteLine($"Error parsing exam paper: {ex.Message}"); Console.WriteLine($"Stack Trace: {ex.StackTrace}"); Snackbar.Add($"解析试卷时发生错误:{ex.Message}", Severity.Error); } } else { Snackbar.Add("试卷文本为空,无法解析。", Severity.Warning); } StateHasChanged(); } [Inject] public IExamService examService { get; set; } public async Task Publish() { var apiRespon = await examService.SaveParsedExam(ExamContent); Snackbar.Add(apiRespon.Message); } }