根据MVC3中的条件隐藏webgrid列“编辑”链接

时间:2012-10-17 15:08:19

标签: asp.net asp.net-mvc-3

我有一个webgrid MVC3包含4列名称,地址,年龄&编辑。如果年龄大于55,我想隐藏Edit行的链接。帮助我这样做。

是否有OnItemDataBound事件等事件?

谢谢

1 个答案:

答案 0 :(得分:3)

  

是否有像OnItemDataBound事件这样的事件?

不,ASP.NET MVC中没有事件这样的概念。

您可以使用自定义格式列。

型号:

public class PersonViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public int Age { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var persons = new[]
        {
            new PersonViewModel { Id = 1, Name = "u 1", Address = "a 1", Age = 54 },
            new PersonViewModel { Id = 2, Name = "u 2", Address = "a 2", Age = 55 },
            new PersonViewModel { Id = 3, Name = "u 3", Address = "a 3", Age = 56 },
        };
        return View(persons);
    }
}

查看:

@model IEnumerable<PersonViewModel>
@{
    var grid = new WebGrid(Model);
}

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column("Name"),
        grid.Column("Address"),
        grid.Column("Age"),
        grid.Column(
            header: "Edit", 
            format: 
                @<text>
                @if (item.Age < 56) 
                { 
                    @Html.ActionLink("Edit", "Edit", new { id = (int)item.Id }) 
                }
                </text>
        )
    )
)

显然,您隐藏链接这一事实并不能减轻您在给定人员ID的Edit控制器操作中对Age进行相同检查的负担。没有什么可以阻止用户直接在他的浏览器地址栏中输入此编辑操作的URL。