我在Blazor中编写了以下代码,我是按照本教程编写的。net learn,但我不明白单击此span时currentStar的值是如何更改的<span class="btn btn-danger"@onclick="(e => SubmitRating(currentStar))"></span>
,但是当我使用相同的代码时,使用i代替currentStar,将值发送到SubmitRating()函数始终为6,它不会根据我单击的范围而更改,例如,当我单击循环显示的第一个范围时,使用@onclickevent中的变量currentStar,将值提交给SubmitRating()为1,但当使用变量i时,提交给SubmitRating()的值始终为6。这是下面的代码,请观看链接的视频,以清楚地理解我想说的内容。
'
@for (int i = 1; i < 6; i++)
{
int currentStar=i;
if (i <= currentRating)
{
<span class="btn btn-dark" @onclick="(e => SubmitRating(currentStar))"></span>
}
else
{
<span class="btn btn-danger" @onclick="(e => SubmitRating(i))"></span>
}
}
@code {
Paiza selectedProduct;
string selectedProductid;
void selectProducts(string id)
{
selectedProductid = id;
selectedProduct = Productservis.GetProducts().First(x => x.Id == id);
GetCurrentRating();
}
int currentRating = 0;
int voteCount = 0;
string voteLabel;
void GetCurrentRating()
{
if (selectedProduct.Ratings == null)
{
currentRating = 0;
voteCount = 0;
}
else
{
voteCount = selectedProduct.Ratings.Count();
voteLabel = voteCount > 1 ? "Votes" : "Vote";
currentRating = selectedProduct.Ratings.Sum() / voteCount;
}
}
void SubmitRating(int rating)
{
Productservis.AddRating(selectedProductid, rating);
selectProducts(selectedProductid);
}
}
'
我尝试记录这两个变量,但在HTML中呈现的值是相同的。
if (i <= currentRating)
{
<span class="btn btn-dark" id="@i" name="@currentStar" @onclick="(e => SubmitRating(currentStar))"></span>
}
else
{
<span class="btn btn-danger" id="@i" name="@currentStar" @onclick="(e => SubmitRating(i))"></span>
}
2条答案
按热度按时间up9lanfz1#
请尝试以下操作:
mctunoxg2#
变量 i 在Razor组件代码被评估为呈现时递增,并且始终为 6。这就是为什么您有行:
存储 i 的中间值
请看我的答案