简单的剃刀模板语法,包括用于分隔名称的逗号

Jam*_*ord 20 .net html c# razor

我有以下剃刀模板html,虽然我无法弄清楚如何包含逗号来分隔标记内的名称!?尝试以下代码时,我得到; expected编译器错误!我还需要删除最后一个逗号.

@foreach (People person in Model.People)
{
  person.Name,
}
Run Code Online (Sandbox Code Playgroud)

我想要:特德,詹姆斯,珍妮,汤姆

nem*_*esv 45

怎么样的string.Join而不是foreach(它甚至解决了最后一项问题后的逗号):

@String.Join(", ", Model.People.Select(p => p.Name).ToArray())
Run Code Online (Sandbox Code Playgroud)

  • +1,此外,尽管它可能会有点混乱,你也可以扩展它以使用ActionLinks:`@ Html.Raw(String.Join(",",Model.People.Select(p => Html.ActionLink) (p.Name,"Details").ToHtmlString()).ToArray()))` (2认同)
  • 4年后,LINQ仍然让我感到惊讶. (2认同)

Tim*_*ora 6

您可以用来<text></text>在 Razor 模板中包含文字内容。要省略最后一个逗号,我将使用for循环而不是foreach.

@{
    var peopleList = Model.People.ToList();

    for( int i = 0; i < peopleList.Count; i++ )
    {
        @peopleList[i].Name
        if( i < peopleList[i].Count - 1 )
        {
            <text>,</text>
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如 @nemesv 指出的,如果您所做的只是创建和显示分隔字符串,那么string.Join()这是实现此目的的更简洁的方法。如果您正在构建更复杂的标记,您可能需要使用循环。