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

Blazor中@bind-Value绑定输入值自动带单引号问题排查

问题分析与解决

你的代码本身不会导致模型值被单引号包裹,问题出在以下几个可能的地方,逐一排查:

1. 检查LoginModel的ToString()方法

如果你的LoginModel类重写了ToString(),且在方法里给字段值套了单引号,那输出时就会带单引号。比如:

public class LoginModel
{
    public string Email { get; set; }
    public string Password { get; set; }

    // 这种写法会导致输出带单引号
    public override string ToString()
    {
        return $"Email: '{Email}', Password: '{Password}'";
    }
}

解决:修改ToString()方法,去掉单引号即可。

2. 检查值的展示代码

你看到的带单引号的输出,大概率是在页面渲染时手动加了单引号。比如你可能写了:

<p><strong>Email</strong>: '@loginModel.Email' , <strong>Password</strong>: '@loginModel.Password'</p>

Blazor中,插值表达式外面的单引号会被直接渲染出来。正确的写法是去掉单引号:

<p><strong>Email</strong>: @loginModel.Email , <strong>Password</strong>: @loginModel.Password</p>

3. 调试确认原始值

在ExecuteLogin里加调试代码,直接输出模型的原始值:

public void ExecuteLogin()
{
    Console.WriteLine($"Email: {loginModel.Email}");
    Console.WriteLine($"Password: {loginModel.Password}");
}

如果控制台输出的是不带单引号的纯值,说明问题完全在展示逻辑;如果控制台输出也带单引号,那就是LoginModel的定义问题。

补充:绑定语法规范

你的代码里用了@bind-value,Blazor推荐用简化的@bind语法,或者标准的@bind-Value(注意首字母大写),不过这个不会导致单引号问题,只是代码规范:

<input @bind="loginModel.Email" type="text"/>
<input @bind="loginModel.Password" type="password" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:25:16