在Blazor服务器页面中,我找不到任何方法来检测何时 Select 了单播组中的不同单选项目.

下面是onChange事件从不工作的示例:

<InputRadioGroup @bind-Value="selectedValue">
    <InputRadio Value="1" @onchange="()=>IsDirty = true">Option 1</InputRadio>
    <InputRadio Value="2" @onchange="()=>IsDirty = true">Option 2</InputRadio>
    <InputRadio Value="3" @onchange="()=>IsDirty = true">Option 3</InputRadio>
</InputRadioGroup>

@code 
{
    private string selectedValue;
    private bool IsDirty { get; set; }
}

有没有办法在Blazor服务器中设置IsDirty标志?

这是DotNet7使用dotnet new blazorserver-empty来生成模板项目.

推荐答案

可以将新属性与getset一起使用:

<InputRadioGroup @bind-Value="SelectedValue">
    <InputRadio Value="1">Option 1</InputRadio>
    <InputRadio Value="2">Option 2</InputRadio>
    <InputRadio Value="3">Option 3</InputRadio>
</InputRadioGroup>

@code 
{
    private string selectedValue;
    public string SelectedValue 
    { 
        get { return selectedValue; } 
        set { selectedValue = value; IsDirty = true;}
    }

    private bool IsDirty { get; set; }
}

不过,请注意以下几点:

  • 在初始化selectedValue时,不要使用属性,因为这样也会设置布尔值.
  • 布尔值只是声明该值在某个点上已更改,但它不会说明该值是否与其原始值不同.
  • @BIND:SET、@BIND:GET和@BIND:After可用于与@Mr CakaShaunCurtis中相同的用途,但它仅在.Net7中可用,并且其早期版本存在一个已知问题,使其无法使用,您必须使用具有issue fixed的VS版本.

.net相关问答推荐

实体框架核心:Azure容器应用程序的执行超时已过期

DI通过对象的接口而不是实际类型来解析服务

竖线在 PropertyGroup .csproj 文件中的含义

等待时 Blazor 服务器按钮刷新

IIS 发布 ASP.NET Core 应用程序而不关闭 IIS 网站

为什么这个多态 C# 代码会打印它的功能?

ASP.NET MVC:隐藏字段值不会使用 HtmlHelper.Hidden 呈现

如何让 DateTimePicker 显示一个空字符串?

发布版本中的 Debug.WriteLine

将笔画应用于 WPF 中的文本块

ReaderWriterLock 与锁{}

大型 WCF Web 服务请求因 (400) HTTP 错误请求而失败

你如何调试 MVC 4 API 路由?

VB.NET 与 C# 整数除法

如何将 XPath 与 XElement 或 LINQ 一起使用?

将字典值转换为数组

如何获取当前的 ProcessID?

在foreach循环中修改列表的最佳方法是什么?

Roslyn 编译代码失败

Uri.Host 和 Uri.Authority 有什么区别