1

MVC3名前、住所、年齢、編集の4つの列を含むWebグリッドがあります。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 に答える