Asp.net Blazor绑定变量问题
在我的Blazor项目中,我有一个简单的输入文本框,我想在其中绑定产品价格值。价格初步计算如下:Asp.net Blazor绑定变量问题,asp.net,asp.net-core,blazor,Asp.net,Asp.net Core,Blazor,在我的Blazor项目中,我有一个简单的输入文本框,我想在其中绑定产品价格值。价格初步计算如下: PackageObject.Price = PackageObject.PackageProducts.Sum(x => x.Product.Price * x.Qty); 然后将变量绑定到文本框: <input class="form-control" type="text" @bind="@PackageObject.Price" placeholder="Package Pric
PackageObject.Price = PackageObject.PackageProducts.Sum(x => x.Product.Price * x.Qty);
然后将变量绑定到文本框:
<input class="form-control" type="text" @bind="@PackageObject.Price" placeholder="Package Price" />
然后我将变量@price绑定到文本框,同样的事情。我无法找到一种方法,将文本框设置为我最初计算的值,然后让用户根据需要进行更改
请帮忙
谢谢
Frank在
OnInitialized
或OnInitializedAsync
方法中设置值:
protected override void OnInitialized()
{
PackageObject.Price = PackageObject.PackageProducts.Sum(x => x.Product.Price * x.Qty);
}
我试图重现你的问题,但如果没有你的代码的完整回复,我无法确定什么是错误的,或者接受你的结论。下面是一个运行良好的代码片段,并按预期更新PackageObject.Price字段。请注意,计算是在OnInitialized life cycle方法中进行的,该方法只发生一次,这也许就是我的示例可以正常工作的原因。但我不能完全肯定这一点 用法
@_PackageObject.TotalPrice
@代码
{
PackageObject_PackageObject=新的PackageObject();
受保护的覆盖无效OnInitialized()
{
_PackageObject.ID=1;
_PackageObject.TotalPrice=\u PackageObject.PackageProducts.Sum(p=>
p、 价格*p.数量);
Console.WriteLine(_PackageObject.TotalPrice);
}
公共类PackageObject
{
公共int ID{get;set;}
公共整数TotalPrice{get;set;}
公共列表PackageProducts{get;set;}=
可枚举范围(1,5)。
选择(i=>新产品{ID=i,价格=50,数量=10});
}
公共类产品
{
公共int ID{get;set;}
公共整数价格{get;set;}
公共整数数量{get;set;}
}
}
protected override void OnInitialized()
{
PackageObject.Price = PackageObject.PackageProducts.Sum(x => x.Product.Price * x.Qty);
}
<input class="form-control" type="text" @bind="@_PackageObject.TotalPrice"
placeholder="Package Price" />
<input type="button" @onclick="@(() => { })" value="Refresh page"/>
<p>@_PackageObject.TotalPrice</p>
@code
{
PackageObject _PackageObject = new PackageObject();
protected override void OnInitialized()
{
_PackageObject.ID = 1;
_PackageObject.TotalPrice = _PackageObject.PackageProducts.Sum(p =>
p.Price * p.Qty);
Console.WriteLine(_PackageObject.TotalPrice);
}
public class PackageObject
{
public int ID { get; set; }
public int TotalPrice { get; set; }
public List<Product> PackageProducts { get; set; } =
Enumerable.Range(1, 5).
Select(i => new Product { ID = i, Price = 50, Qty=10 }).ToList();
}
public class Product
{
public int ID { get; set; }
public int Price { get; set; }
public int Qty { get; set; }
}
}