簡體   English   中英

在if語句中時string.Format在C#剃刀中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM