You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor表单中无需JavaScript:基于输入ID填充禁用的患者姓名输入框

可以不使用JavaScript实现该功能

完全可以依赖Blazor的原生能力实现需求,不需要编写任何JavaScript代码。以下是具体的修改方案:

核心思路

  • 给第一个输入框绑定变量,获取用户输入的ID值
  • 定义变量存储患者姓名,通过Blazor的自动UI更新机制同步到第二个禁用输入框
  • 在失焦方法中调用服务获取数据,更新姓名变量即可触发UI刷新

修改后的完整代码

HTML部分

<input type="text" class="form-control" maxlength="8" @bind="StudyId" @onblur="lostFocus" />
<input type="text" class="form-control" id="name" name="Name" value="@PatientName" disabled />

C#代码部分

@code {
    // 绑定第一个输入框的ID值
    private string StudyId { get; set; } = string.Empty;
    // 存储患者姓名,用于填充第二个输入框
    private string PatientName { get; set; } = string.Empty;

    // 推荐使用异步方法避免阻塞UI(实际项目中数据库操作应为异步)
    public async Task lostFocus()
    {
        // 清空旧数据,避免残留
        PatientName = string.Empty;

        // 验证输入不为空
        if (!string.IsNullOrWhiteSpace(StudyId))
        {
            var patient = await PatientService.GetPatientByStudyIDAsync(StudyId);
            if (patient != null)
            {
                PatientName = patient.Name;
            }
        }
    }

    // 如果你的服务只有同步方法(不推荐,会阻塞UI),可以用这个版本
    // public void lostFocus()
    // {
    //     PatientName = string.Empty;
    //     
    //     if (!string.IsNullOrWhiteSpace(StudyId))
    //     {
    //         var patient = PatientService.GetPatientByStudyID(StudyId);
    //         if (patient != null)
    //         {
    //             PatientName = patient.Name;
    //         }
    //     }
    // }
}

原理说明

Blazor采用组件化模型,当PatientName变量的值发生变化时,框架会自动检测到变更并重新渲染第二个输入框的value属性,完全不需要手动操作DOM——这是Blazor的原生特性,和JavaScript无关。

内容的提问来源于stack exchange,提问作者user10191234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:50:20