@page "/exam/create" @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 配置 ParseExam @code { [CascadingParameter] private Task authenticationStateTask { get; set; } private bool _open = false; private void ToggleDrawer() { _open = !_open; } private BlazoredTextEditor _textEditor = new BlazoredTextEditor(); private ExamPaper _parsedExam = new ExamPaper(); private ExamDto ExamContent = new ExamDto(); private ExamParserConfig _examParserConfig { get; set; } = new ExamParserConfig(); 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() { ExamContent.CreaterEmail = authenticationStateTask.Result.User.Identity.Name; var apiRespon = await examService.SaveParsedExam(ExamContent); Snackbar.Add(apiRespon.Message); } }