MVC3
名前、住所、年齢、編集の4つの列を含むWebグリッドがあります。Edit
年齢が 55 歳以上の行のリンクを非表示にしたいのですが、それを手伝ってください。
イベントのようなOnItemDataBound
イベントはありますか?
ありがとうございました
MVC3
名前、住所、年齢、編集の4つの列を含むWebグリッドがあります。Edit
年齢が 55 歳以上の行のリンクを非表示にしたいのですが、それを手伝ってください。
イベントのようなOnItemDataBound
イベントはありますか?
ありがとうございました
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 をブラウザーのアドレス バーに直接入力することを妨げるものは何もありません。