[英]string.Format not working in C# razor when inside if statement
我在剃刀視圖中使用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>
我逐步瀏覽了該項目,如果被擊中, item.AverageTimeToPay
的值為12,但未顯示任何內容。
知道為什么會這樣嗎? 謝謝!
您缺少@
和括號,請將其更改為此。
<td>
@if (item.AverageTimeToPay != null)
{
<b>@(string.Format("{0} Days", item.AverageTimeToPay))</b>
}
</td>
該代碼正在運行,但沒有向頁面發出任何東西。
這將自動顯示在頁面上:
@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>
問題是您沒有脫離代碼塊。
嘗試以下方法:
<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>
您需要將字符串打印到頁面上,所以請嘗試:
<td>
<b>@if (item.AverageTimeToPay != null)
{
@string.Format("{0} Days", item.AverageTimeToPay);
}
</b>
</td>
您沒有將輸出呈現為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>
}
檢查這個小提琴
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.