1. ホーム
  2. asp.net-mvc

[解決済み] MVC Razor @foreach

2023-03-17 18:27:19

質問

ビューの中に@foreachがあるのはダメだと聞きました。つまり、ビューの中にロジックを入れてはいけないということです。foreachのロジックがどこにあるべきかのベストプラクティスは何ですか?

    @foreach.. 

どのように解決するのですか?

<ブロッククオート

foreach のロジックをどこに置くべきか、ベストプラクティスは何ですか?

どこにもない、ただそれを取り除くだけです。エディタやディスプレイのテンプレートを使えばいい。

だから例えば

@foreach (var item in Model.Foos)
{
    <div>@item.Bar</div>
}

は表示テンプレートに置き換えても全く問題ないでしょう。

@Html.DisplayFor(x => x.Foos)

で、対応する表示テンプレートを定義することになります。 デフォルトの ). つまり、再利用可能なテンプレートを定義します。 ~/Views/Shared/DisplayTemplates/Foo.cshtml を定義します。これは Foos コレクションの各要素に対してフレームワークによって自動的にレンダリングされます ( IEnumerable<Foo> Foos { get; set; } ):

@model Foo
<div>@Model.Bar</div>

当然ながら、全く同じ規約がエディタテンプレートにも適用されます。これは、ビューモデルを読み取り専用として表示するのとは対照的に、編集可能な入力フィールドを表示したい場合に使用されるべきものです。