Blazor Server登录表单绑定问题:LoginModel空值及RZ9991错误
问题分析与修复方案
核心原因
1. RZ9991错误原因
Blazor的双向绑定语法对大小写严格要求,你用了bind-Value(大写V),但官方规定的正确格式是bind-value(全小写)。这个语法错误会直接导致绑定逻辑失效,输入框的值根本无法同步到LoginModel的属性中。
2. LoginModel为空的关联问题
因为绑定语法错误,输入框的内容没有被赋值到LoginModel的Username和Password属性里,所以调用HandleLogin时,模型对象的属性自然是空的。你手动构建模型能正常工作,也验证了这一点——方法本身没问题,问题完全出在数据绑定环节。
修复步骤
第一步:修正绑定语法
把所有输入框的bind-Value改成bind-value,示例如下:
错误代码:
<input type="text" @bind-Value="loginModel.Username" /> <input type="password" @bind-Value="loginModel.Password" />
修正后:
<input type="text" @bind-value="loginModel.Username" /> <input type="password" @bind-value="loginModel.Password" />
第二步:确保LoginModel的属性可绑定
检查你的LoginModel类,确保属性是公共、带有get和set访问器的,建议给属性赋默认值避免空引用:
public class LoginModel { public string Username { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; }
第三步:在组件中正确初始化LoginModel
在Blazor组件的代码块里,提前初始化LoginModel实例,不要让它为null:
@code { private LoginModel loginModel = new LoginModel(); private async Task HandleLogin() { // 此时loginModel的Username和Password已能正常获取输入值 // 后续登录逻辑 } }
验证
修正后重新编译,RZ9991错误会消失,提交表单时loginModel的属性就能正确获取到输入值,HandleLogin方法也能正常处理登录请求了。
内容的提问来源于stack exchange,提问作者general
相关产品推荐
相关产品推荐

