using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using WIDESEAWCS_S7Simulator.Core.Entities; using WIDESEAWCS_S7Simulator.Web.Services; namespace WIDESEAWCS_S7Simulator.Web.Pages; /// /// 实例详情页 /// public class DetailsModel : BasePageModel { private readonly ILogger _logger; private readonly ApiHttpClient _apiClient; public DetailsModel(ILogger logger, IConfiguration configuration, ApiHttpClient apiClient) : base(configuration) { _logger = logger; _apiClient = apiClient; } public InstanceState? Instance { get; private set; } public List Clients { get; private set; } = new(); public async Task OnGetAsync(string id) { if (string.IsNullOrWhiteSpace(id)) { return BadRequest("实例ID不能为空"); } try { Instance = await _apiClient.GetInstanceAsync(id); if (Instance == null) { return NotFound($"实例 \"{id}\" 不存在"); } // 客户端信息已包含在 InstanceState 中 if (Instance.Clients != null) { Clients = Instance.Clients; } } catch (HttpRequestException ex) { _logger.LogError(ex, "Failed to load instance details for {InstanceId}", id); ModelState.AddModelError(string.Empty, "加载实例详情失败,请稍后重试"); } return Page(); } }