Asp.net 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

在我的Blazor项目中,我有一个简单的输入文本框,我想在其中绑定产品价格值。价格初步计算如下:

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; }
 }
}