【问题标题】:Input Date binding输入日期绑定
【发布时间】:2020-06-23 19:37:05
【问题描述】:

我正在尝试绑定到:

public DateTime? DOB { get; set; }

这很完美:

<input type="date" format-value="MM/dd/yyyy" @bind="MyObject.DOB">

我需要做的是,

<input type="date" format-value="MM/dd/yyyy" value="@MyObject.DOB"  @onchange="@( (args) => { MyObject.DOB = args.Value.ToString().TryDateConvert(); MyMethod();})">

或者

<input type="date" format-value="MM/dd/yyyy" value="@MyObject.DOB"  @onchange="@( (args) => DOBChanged(args))">

&

public void DOBChanged(ChangeEventArgs e)
{
    var myVal =e.Value.ToString();
    MyObject.DOB = myVal.TryDateConvert();
    MyMethod();
}

我尝试了一些变体,但不管它会绑定到 MyObject.DOB,但它不会显示在文本框中。

它将重置回 MM/DD/YYYY。我在其他控件上使用过这种方式,但由于某种原因,日期将其抛出一个循环。

谢谢。

【问题讨论】:

  • 查看 Chris Sainty 的博客文章 here,他讨论了构建自定义输入组件(以及其他内容),这可能会为您指明正确的方向。简短的版本是您将制作一个足够智能的组件来为您处理逻辑,如果需要,您可以提供格式字符串等作为组件参数。
  • 我只是希望有一个简单的解决方案。这似乎很奇怪,这不起作用。
  • 您也可以尝试使用 InputDate 原生组件,使用 Bind-Value 绑定到您的属性,然后执行解析逻辑并在属性设置器中运行您的其他方法。我已经看到绑定到可为空的日期时间可能有点棘手,但值得谷歌搜索和尝试。

标签: .net .net-core blazor blazor-server-side


【解决方案1】:

&lt;input type="date"&gt; 不能很好地使用格式值属性,您可以阅读更多关于它的信息https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date

你可以试试这个-

<input type="date" value="@MyObject.DOB.ToString("yyyy-MM-dd")" @onchange="@( (args) => DOBChanged(args))">

public void DOBChanged(ChangeEventArgs e)
    {
        var myVal = e.Value.ToString();
        MyObject.DOB = DateTime.Parse(myVal);
        MyMethod();
    }

【讨论】:

  • 这让我朝着正确的方向前进。谢谢。
猜你喜欢
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多