2012-10-17 34 views

回答

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的控制器操作。没有任何东西阻止用户直接在浏览器地址栏中输入此编辑操作的URL。