2010-11-22 2 views
5

Razor отлично справляется с пониманием того, что вы хотите делать, когда это просто. Я просто хочу отформатировать переменную из запроса и немного запутался. Все работает отлично, за исключением одной строки с строкой isnull в if. Компилятор терпит неудачу в строке с {& nbsp}, говоря, что ожидает точку с запятой;. Вот код:Как форматировать встроенные переменные бритвы

@foreach(var row in db.Query(selectQueryString)){ 
<tr> 
     <td>@row.ACCT &nbsp &nbsp</td> 
     <td>@row.QuoteStart &nbsp &nbsp</td> 
     <td>@row.VIN &nbsp &nbsp </td> 
     <td>@{ if (String.IsNullOrEmpty(row.AmountFinanced) == true) 
       { &nbsp } else 
       {String.Format("{0:0,0.00}",row.AmountFinanced) &nbsp &nbsp } 
      } </td> 
     <td>@row.Step &nbsp &nbsp </td> 


</tr> 
} 

ответ

10

Вам нужно обернуть &nbsp; сек в <text></text> блоке. Это заставляет парсер убежать обратно в html, потому что когда вы находитесь в блоке {}, парсер будет считать, что &nbsp; должен быть кодом.

@foreach(var row in db.Query(selectQueryString)){ 
<tr> 
     <td>@row.ACCT &nbsp &nbsp;</td> 
     <td>@row.QuoteStart &nbsp; &nbsp;</td> 
     <td>@row.VIN &nbsp; &nbsp; </td> 
     <td>@{ if (String.IsNullOrEmpty(row.AmountFinanced) == true) 
       { <text>&nbsp;</text> } else 
       { @String.Format("{0:0,0.00}",row.AmountFinanced) <text>&nbsp; &nbsp;</text> } 
      } </td> 
     <td>@row.Step &nbsp; &nbsp; </td> 
</tr> 
} 
+0

Благодарим за объяснение и исправление кода. Я думаю, вам нужно @ перед String.Format. Вот последний код, который я использовал (мне пришлось преобразовать строку обратно в число, чтобы добавить индикатор тысяч): {@ String.Format ("{0: 0,0.00}", Convert.ToDouble (row.AmountFinanced)) & nbsp}} Если вы отредактируете свой ответ, я помету его как принятый. Еще раз спасибо. – Knox 2010-11-22 22:50:26

Смежные вопросы