c# - 选择选项下拉列表不显示所选选项

标签 c# html blazor

我有一个 Blazor 应用程序,它使用来自数据库的数据填充 6 个选择选项下拉列表。其中三个用字符串列表中的日期和时间填充。

当我选择一个日期和时间时,它没有显示在下拉框中。选择日期时间后,下拉列表为空白,但实际上已选择该值并且绑定(bind)有效。它只是没有显示。

如果我删除“bind=@...”,它会正确显示。 有没有其他人经历过这个,你是如何解决的?

<select bind="@Innput.Klokkeslett1">
                        <option value="@(0)">Tid1</option>
                        @foreach (var tid1 in tidListe)
                        {
                            <option value="@tid1">@tid1</option>
                        }
                    </select>

最佳答案

需要注意两点,select 使用字符串值,并且该值需要与 option 值相匹配。 因此,如果您的字段 Innput.Klokkeslett1 是 DateTime,您将需要使用一个属性来处理字符串和 DateTime 之间的绑定(bind)/转换。 如果您确保为 option 值使用明确的日期格式,并且您的属性以相同的日期格式返回它的值,则选择将能够匹配它的 value到其中一个 option values 并显示相应的文本,可以按照您喜欢的任何方式进行格式化。

<select bind="@MySelectProxy">
    <option value="@(0)">Tid1</option>
    @foreach (var tid1 in tidListe)
    {
        <option value="@tid1.ToString("yyyy-MM-dd HH:mm:ss")">@tid1</option>
    }
</select>

@functions
{
string MySelectProxy {
  get => Innput.Klokkeslett1.ToString("yyyy-MM-dd HH:mm:ss");
  set => DateTime.TryParse(value, out Innput.Klokkeslett1); 
  }
}

关于c# - 选择选项下拉列表不显示所选选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55426234/

相关文章:

c# - 我可以向函数添加属性以防止重新进入吗?

c# - 如何从 DevExpress LookupEdit 中获取选定的值?

javascript - 如何在不重新加载页面的情况下进行随机文本更改

html - 如何在静态网站上添加社交分享按钮?

blazor - 如何在 Blazor 中检测整页刷新/重新加载

javascript - 从 JavaScript 调用 Blazor 方法

c# - 优化 SQL 连接性能?

c# - 使用 WebSocket 在 Java 和 C# 桌面应用程序之间进行通信?

PHP 变量未填充到表单上的 HTML 日期时间本地字段中

blazor - Wasm DOM 访问和引用类型