所以我的ASP MVC View逻辑中发生了一个奇怪的行为。我知道在视图中使用逻辑并不是最好的做法,但这肯定不会导致这种情况发生吗?
我有一个环绕集合的foreach循环,显示总成本,原始值和节省的金额。但是使用以下代码,VALUE变量是错误的,但总调整和价格调整是正确的。
@foreach (var option in Model.ProductAttributes.Single().Values)
{
<div class="row">
<div class="small-5 columns">
<h3>@option.Name</h3>
</div>
<div class="small-2 columns text-center costCol">
<h3><strong>@{ var total = (option.Cost + option.PriceAdjustmentValue).ToString("C");}@total</strong></h3>
</div>
<div class="small-2 columns text-center savingsCol">
<ul>
<li>Value @{ var value = (option.Cost - option.PriceAdjustmentValue).ToString("C");}@value</li>
<li>Savings @option.PriceAdjustment</li>
</ul>
</div>
<div class="small-3 columns text-center">
<a href="#" class="button">Buy</a>
</div>
</div>
if (!option.Equals(last)) {
<hr class="noTopMarginHr" />
}
}
所以我调试了正在发生的事情,并且出于某种原因,在值行中,option.Cost正在通过option.PriceAdjustment添加,然后是minused。因此,举例来说,如果我的成本是80,而我的PriceAdjusted是-40,那么Value将会达到160 $,而不是120 $。
如果我将值行更改为:
<li>Value @{ var value = ((option.Cost + option.PriceAdjustmentValue) - option.PriceAdjustmentValue).ToString("C");}@value</li>
然后它工作正常,但这似乎是错误的。
这里发生了什么?我错过了什么?