如何在剃须刀代码块中插入空格?
How do I insert spaces within a razor Code block?
VS2013、MVC5、剃刀,VB
我想在单词 'Answered' 前加空格。如何在以下 Razor 代码块中强制使用空格?
@Code If Model.DisplayAnsweredFlag Then
@If Model.Answered Then
@Html.Raw("Answered")
End If
End If
End Code
在 html.raw() 中,空格本身或前面文本中的空格似乎没有编码到页面中。但我也不能在代码块中使用“ ”或“@ ”,因为它的语法不正确。
如果我编码技术不好,请指教,或者如果有不同的方法来获取空格,请指教。
你为什么不尝试不同的方法。使用带有一些填充的 span 标签
解析 HTML 时会忽略空格,除非它们出现在 pre
块中。如果你想填充一些文本,你需要采取以下方法之一:
将其包装在块级 HTML 元素中,例如 p
或 div
,然后使用 [=] 将 padding/margin 添加到元素中34=]。这是推荐的方法。
使用
代替您要填充的常规空格。渲染时只计算不间断空格 HTML。但是,这种方法很老套,不推荐使用。
将您的文本包裹在 pre
元素中。然后 <pre>
和 </pre>
标签中的所有空格都将被考虑在内。但是,这种方法也是 hacky,不推荐使用。
AndyBuk在这里给出了答案:
https://forums.asp.net/t/1772048.aspx?How+to+use+no+break+space+HTML+character+inside+if+brackets+in+a+view+
他在那 link 中写道:
The introduction to Razor syntax at:
http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax
is quite useful.
To force html output for your string, you may use <text>
to Block or @:
as a Prefix.
@if (condition)
{
<text> </text>
@:
}
<text> </text>
插入“
”以添加更多空格。
当我需要在 table 中显示结构时,我会使用这种方法。
item
已经预先计算了level
属性。
@helper PrintChild(List<ItemBalanceView> items)
{
foreach (var item in items)
{
<tr>
<td>@Html.Raw(InsertSpaces(item.LevelNum))<a class="text-primary" href='@Url.Content("~/Items/DetailsPos/")@item.ItemDocDetailID'>@item.ItemDocDetailName</a></td>
<td>@Math.Round(item.Qty, 2)</td>
<td>@Math.Round(item.Price, 2)</td>
<td>@Math.Round(item.Total, 2)</td>
</tr>
if (item.Children != null)
{
@PrintChild(item.Children)
}
}
}
@functions
{
string InsertSpaces(int level)
{
var str = string.Empty;
for (int i = 0; i < level; i++)
{
str += " ";
}
return str;
}
}
<table class="table table-sm">
<thead>
<tr>
<th>Name</th>
<th>Qty</th>
<th>Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.BalancesAsStructure)
{
<tr>
<td>@Html.Raw(InsertSpaces(item.LevelNum))<a class="text-primary" href='@Url.Content("~/Items/DetailsPos/")@item.ItemDocDetailID'>@item.ItemDocDetailName</a></td>
<td>@Math.Round(item.Qty, 2)</td>
<td>@Math.Round(item.Price, 2)</td>
<td>@Math.Round(item.Total, 2)</td>
</tr>
if (item.Children != null)
{
@PrintChild(item.Children)
}
}
</tbody>
<tfoot>
<tr style="background-color:#d7c0c0!important;">
<th></th>
<th></th>
<th></th>
<th>@Math.Round(Model.Total, 2)</th>
</tr>
</tfoot>
</table>
VS2013、MVC5、剃刀,VB
我想在单词 'Answered' 前加空格。如何在以下 Razor 代码块中强制使用空格?
@Code If Model.DisplayAnsweredFlag Then
@If Model.Answered Then
@Html.Raw("Answered")
End If
End If
End Code
在 html.raw() 中,空格本身或前面文本中的空格似乎没有编码到页面中。但我也不能在代码块中使用“ ”或“@ ”,因为它的语法不正确。
如果我编码技术不好,请指教,或者如果有不同的方法来获取空格,请指教。
你为什么不尝试不同的方法。使用带有一些填充的 span 标签
解析 HTML 时会忽略空格,除非它们出现在 pre
块中。如果你想填充一些文本,你需要采取以下方法之一:
将其包装在块级 HTML 元素中,例如
p
或div
,然后使用 [=] 将 padding/margin 添加到元素中34=]。这是推荐的方法。使用
代替您要填充的常规空格。渲染时只计算不间断空格 HTML。但是,这种方法很老套,不推荐使用。将您的文本包裹在
pre
元素中。然后<pre>
和</pre>
标签中的所有空格都将被考虑在内。但是,这种方法也是 hacky,不推荐使用。
AndyBuk在这里给出了答案:
https://forums.asp.net/t/1772048.aspx?How+to+use+no+break+space+HTML+character+inside+if+brackets+in+a+view+
他在那 link 中写道:
The introduction to Razor syntax at:
http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax is quite useful.
To force html output for your string, you may use<text>
to Block or@:
as a Prefix.
@if (condition)
{
<text> </text>
@:
}
<text> </text>
插入“
”以添加更多空格。
当我需要在 table 中显示结构时,我会使用这种方法。
item
已经预先计算了level
属性。
@helper PrintChild(List<ItemBalanceView> items)
{
foreach (var item in items)
{
<tr>
<td>@Html.Raw(InsertSpaces(item.LevelNum))<a class="text-primary" href='@Url.Content("~/Items/DetailsPos/")@item.ItemDocDetailID'>@item.ItemDocDetailName</a></td>
<td>@Math.Round(item.Qty, 2)</td>
<td>@Math.Round(item.Price, 2)</td>
<td>@Math.Round(item.Total, 2)</td>
</tr>
if (item.Children != null)
{
@PrintChild(item.Children)
}
}
}
@functions
{
string InsertSpaces(int level)
{
var str = string.Empty;
for (int i = 0; i < level; i++)
{
str += " ";
}
return str;
}
}
<table class="table table-sm">
<thead>
<tr>
<th>Name</th>
<th>Qty</th>
<th>Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.BalancesAsStructure)
{
<tr>
<td>@Html.Raw(InsertSpaces(item.LevelNum))<a class="text-primary" href='@Url.Content("~/Items/DetailsPos/")@item.ItemDocDetailID'>@item.ItemDocDetailName</a></td>
<td>@Math.Round(item.Qty, 2)</td>
<td>@Math.Round(item.Price, 2)</td>
<td>@Math.Round(item.Total, 2)</td>
</tr>
if (item.Children != null)
{
@PrintChild(item.Children)
}
}
</tbody>
<tfoot>
<tr style="background-color:#d7c0c0!important;">
<th></th>
<th></th>
<th></th>
<th>@Math.Round(Model.Total, 2)</th>
</tr>
</tfoot>
</table>