ASP.NET MVC Razor渲染了额外的空白

Gho*_*ngi 5 asp.net-mvc razor

在Asp.net MVC中,Razor在文本块之间插入了额外的空间.我想以这种方式呈现一个列表:"1,2,3"但得到"1,2,3".

@for (int i = 1; i < 3; i++)
{
  <text>@i</text>
  if (i != 2)
  {
    <text>, </text>
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法删除额外的空格?

Eri*_*ing 7

您看到数字和逗号之间有额外的空格,因为您的剃刀模板在数字和逗号之间包含换行符(在浏览器中显示为空格):

@for (int i = 1; i < 3; i++)
{
  <text>@i</text> >LINE BREAK HERE<
  if (i != 2)
  {
    <text>, </text>
  }
}
Run Code Online (Sandbox Code Playgroud)

我喜欢Darin的答案,我建议删除你的循环并用更具说明性的语句替换它,但是如果你不想那么远,请尝试至少删除换行符:

@for (int i = 1; i < 3; i++)
{
    <text>@i</text>if (i != 2){<text>, </text>}
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 6

我想以这种方式呈现一个列表:"1,2,3"

又快又脏:

@string.Join(", ", Enumerable.Range(1, 3))
Run Code Online (Sandbox Code Playgroud)

显然,自定义帮助程序似乎更适合在视图中格式化某些内容的工作:

public static class HtmlExtensions
{
    public static IHtmlString FormatList(this HtmlHelper html, IEnumerable<int> list)
    {
        return MvcHtmlString.Create(string.Join(", ", list));
    }
}
Run Code Online (Sandbox Code Playgroud)

然后简单地说:

@Html.FormatList(Model.MyList)
Run Code Online (Sandbox Code Playgroud)