1

我有一个 webgridMVC3包含 4 列名称、地址、年龄和编辑。Edit如果年龄大于 55,我想隐藏行的链接。帮我做。

有没有类似事件的OnItemDataBound事件?

谢谢

4

1 回答 1

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>
        )
    )
)

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

于 2012-10-17T15:14:04.783 回答