Ira*_*ili 4 html css c# asp.net-mvc razor
我的UsersClass永远不会超过10个项目.我如何能够在这样的视图中显示用户类?
我想显示两行10个单元格

Dar*_*rov 10
与往常一样,在每个ASP.NET MVC应用程序中,我建议使用适合视图要求的视图模型.因此,在此视图中,您提到了一个表,您希望将这些用户按行分组5个元素:
public class MyViewModel
{
public int Key { get; set; }
public IEnumerable<UsersClass> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器动作中:
public ActionResult Index()
{
// that's your domain model => a list of UsersClass
// could be coming from wherever you want
var users = Enumerable.Range(1, 7).Select(x => new UsersClass
{
Id = x
});
// Now let's group those users into the view model:
// We will have 5 elements per row
var model = users
.Select((u, index) => new { User = u, Index = index })
.GroupBy(x => x.Index / 5)
.Select(x => new MyViewModel
{
Key = x.Key,
Users = x.Select(y => y.User)
});
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
最后,强类型视图非常简单:
@model IEnumerable<MyViewModel>
<table>
@foreach (var item in Model)
{
<tr>
@foreach (var user in item.Users)
{
<td>@user.Id</td>
}
<!-- That's just to fill the row with the remaining
td if we have less than 5 users. Obviously
depending on your requirements you could use
a single td with a calculated colspan or something else
-->
@for (int i = item.Users.Count(); i < 5; i++)
{
<td></td>
}
</tr>
}
</table>
Run Code Online (Sandbox Code Playgroud)
显然,使用显示模板可以进一步简化此视图:
@model IEnumerable<MyViewModel>
<table>
@Html.DisplayForModel()
</table>
Run Code Online (Sandbox Code Playgroud)
并在相应的显示模板中:
@model MyViewModel
<tr>
@Html.DisplayFor(x => x.Users)
@for (int i = item.Users.Count(); i < 5; i++)
{
<td></td>
}
</tr>
Run Code Online (Sandbox Code Playgroud)
和UsersClass显示模板:
@model UsersClass
<td>@user.Id</td>
Run Code Online (Sandbox Code Playgroud)
结果:

| 归档时间: |
|
| 查看次数: |
36341 次 |
| 最近记录: |