MVC:如何只在Html:Grid中显示有值的列

本文关键字:显示 Html MVC Grid | 更新日期: 2023-09-27 17:58:37

我想知道如果列表中没有返回任何内容,如何控制列在Html.Grid中是否可见。因此,如果在下面的示例中Model.Comment在ExampleList中没有值,则不应呈现该列。

@Html.Grid(Model.ExampleList).Columns(c =>
    {
        c.For(a => string.Format("{0:dd/MM/yyyy}", a.DateRequested)).Named("Date Requested");
        c.For(a => a.Comment).Named("Comment");
        c.For(a => a.Completed).Named("Completed");
    })

如何做到这一点?

MVC:如何只在Html:Grid中显示有值的列

您应该使用一个视图模型,在这个视图模型中,您应该有一个布尔属性,指示某个东西是否可见。显然,所有关于确定其值的逻辑都不是视图责任=>而是控制器或模型。例如,您可以有以下视图模型:

public class MyViewModel
{
    public bool ShouldDisplayCommentsColumn 
    { 
        get 
        {
            return .... // Check the Items and decide whether you 
                        // should be showing the Comments column or not
        }
    }
    public IEnumerable<SomeOtherViewModel> Items { get; set; }
}

然后在视图中:

if (Model.ShouldDisplayCommentsColumn)
{
    c.For(a => a.Comment).Named("Comment");
}