我在剃须刀视图中使用string.Format
来格式化来自我的viewModel的项目。
当我像这样使用它时工作正常:
<td>
<b>@string.Format("{0:c}", item.TotalCreditPaid)</b>
</td>
但是,当我尝试在if语句中使用它时,它不会在视图中显示任何内容:
<td>
<b>@if (item.AverageTimeToPay != null)
{
string.Format("{0} Days", item.AverageTimeToPay);
}
</b>
</td>
我穿过它并且if被击中,item.AverageTimeToPay
的值为12,但它没有显示任何内容。
知道为什么会这样吗?谢谢!
答案 0 :(得分:5)
您缺少@
和括号,请将其更改为此。
<td>
@if (item.AverageTimeToPay != null)
{
<b>@(string.Format("{0} Days", item.AverageTimeToPay))</b>
}
</td>
答案 1 :(得分:1)
代码正在运行,但它没有向页面发送任何内容。
这会自动发出到页面:
@string.Format("{0:c}", item.TotalCreditPaid)
因为Razor语法的工作原理。基本上,代码行的输出被发送到页面。但是,这只是简单的代码:
string.Format("{0} Days", item.AverageTimeToPay);
它本身并没有做任何事情,需要对其输出做些什么。在第二个示例中,if
块的输出将发送到页面,但if
阻止不输出任何内容。 (这里的线索是分号。它很微妙,但它是一种指示,它只是服务器端的代码行,而不是Razor输出语句。)
您需要做的就是告诉它输出到页面:
<td>
@if (item.AverageTimeToPay != null)
{
<b>@string.Format("{0} Days", item.AverageTimeToPay)</b>
}
</td>
答案 2 :(得分:0)
问题是你没有突破代码块。
请改为尝试:
<td>
@if (item.AverageTimeToPay != null)
{
<b>@string.Format("{0} Days", item.AverageTimeToPay)</b>
}
</td>
或
<td>
<b>@if (item.AverageTimeToPay != null)
{
@:@string.Format("{0} Days", item.AverageTimeToPay);
}
</b>
</td>
答案 3 :(得分:0)
您需要将字符串打印到页面,所以请尝试:
<td>
<b>@if (item.AverageTimeToPay != null)
{
@string.Format("{0} Days", item.AverageTimeToPay);
}
</b>
</td>
答案 4 :(得分:0)
您没有将输出呈现为Html作为字符串,您可以通过两种方式实现
<强> 1)强>
<b>
@if (item.AverageTimeToPay != null)
{
@:@string.Format("{0} Days", item.AverageTimeToPay);
}
</b>
<强> 2)强>
@if (item.AverageTimeToPay != null)
{
<b>@string.Format("{0} Days", item.AverageTimeToPay)</b>
}
检查一下 fiddle