我在ViewModel中有一个项目列表。对于列表中的每个项目,显示为列表。例如
@foreach (var item in Model.Items)
{
<li><a href="link">@Html.DisplayFor(m => item.DisplayName)</a>
}
显示为:
但是如何显示它以便它具有&#34;和&#34;在最后一个项目之前,以及每个项目之后的逗号。像这样:
Item 1, Item 2, Item 3 and Item 4.
答案 0 :(得分:4)
您可以使用纯CSS解决方案来执行此操作
ul.cs-list li {
list-style: none;
display: inline-block;
}
ul.cs-list li::after {
content: ',';
}
ul.cs-list li:last-child::after {
content: '.';
}
ul.cs-list li:nth-last-child(2)::after {
content: 'and';
margin-left: 2px;
}
&#13;
<ul class="cs-list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
&#13;
答案 1 :(得分:0)
在foreach中使用和索引变量(首先用0初始化它)并在每个循环中递增它,添加一个基于它的if语句,将它与Model.Items.Count-1进行比较将给出信息if它是前一个或不是。
答案 2 :(得分:0)
为了达到你想要的输出,我使用了一个计数器变量,用于考虑最后一个元素(应该附加'和'单词)。
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
//Create List of Model
var lst = new List<Model>();
//Insert Elements into List
lst.Add(new Model{ ID = 1, Name = "ABC"});
lst.Add(new Model{ ID = 2, Name = "DEF"});
lst.Add(new Model{ ID = 3, Name = "GHI"});
lst.Add(new Model{ ID = 4, Name = "JKL"});
lst.Add(new Model{ ID = 5, Name = "MNO"});
//Actual Logic to get proper output
int count = 0;
string output = @"";
foreach(var currentModel in lst){
if(count == lst.Count - 1){
output = output + "and " + "<a href='link'>" + currentModel.Name + "</a>";
}
else{
output = output + "<a href='link'>" + currentModel.Name + "</a>" + ", ";
}
count ++;
}
ViewBag.Links = output; //Now you can use it on View
Console.WriteLine(output);
}
}
public class Model{
public int ID { get; set; }
public string Name { get; set; }
}