C# 如何在blazor中正确使用更多受控绑定?
我正在尝试向C# 如何在blazor中正确使用更多受控绑定?,c#,asp.net-core,blazor,C#,Asp.net Core,Blazor,我正在尝试向InputSelectrazor组件添加更多受控绑定。我试图做的是在属性值更改时执行方法LieferanschriftChangedAsync。我的做法如下: ---基恩·利弗兰希里夫--- @foreach(在lieferanschriften中的var anschrift) { @anschrift.ToString() } 专用任务LieferanschriftChangedAsync(字符串值) { _=int.TryParse(值,out int-lieferansch
InputSelect
razor组件添加更多受控绑定。我试图做的是在属性值更改时执行方法LieferanschriftChangedAsync
。我的做法如下:
---基恩·利弗兰希里夫---
@foreach(在lieferanschriften中的var anschrift)
{
@anschrift.ToString()
}
专用任务LieferanschriftChangedAsync(字符串值)
{
_=int.TryParse(值,out int-lieferanschriftId);
Input.LieferanschriftId=LieferanschriftId;
Input.Lieferanschrift=\u lieferanschriften.Where(x=>x.KULA\u N\u NR==lieferanschriftId).FirstOrDefault();
返回Task.CompletedTask;
}
我不想为此使用INotifyPropertyChanged
接口,因为模型。然而,使用这种方法,我总是会收到一条错误消息(CS0411),它告诉我指定数据类型,因为它无法自动计算。因此,我在我的方法中添加了TValue=“int”
。现在我得到以下错误:
无法从“int”转换为“System.ReadOnlySpan”
我做错了什么
LieferanschriftId
是一个整数。推断的类型参数(以及显式设置时)是int
。此类型参数还影响ValueChanged
事件。然而,您已经声明事件处理程序需要一个字符串,而不是int
。如果您将其更改为(int s)
(并将LieferanschriftChangedAsync
中的参数更改为int,则它应该可以解决编译器问题。(此外,您不必再解析该值,因为它已经是int
).注意:此处建议的解决方案适用于.Net5.0。如果您使用的是早期版本的框架,则应将InputSelect组件子类化,以支持整数或枚举值
将模型中的LieferanschriftId字段定义为可空,如下所示:
[Required(ErrorMessage = "Please, select your...")]
public int? LieferanschriftId{ get; set; }
现在您可以执行以下操作:
<option value="">--- Keine Lieferanschrift ---</option>
感谢enet!将变量声明为可为null的int就成功了。值0对我来说是可以的;)所以我刚刚添加了??0在我的setter中。奇怪的是,它与int一起工作?而不是int。
Input.Lieferanschrift = _lieferanschriften.Where(x => x.KULA_N_NR == lieferanschriftId).FirstOrDefault();