0

私はMVCパターンにかなり慣れていません。このロジックを使用して開発を深めるにつれて、克服できるいくつかの問題に直面していますが、適切な方法で実行しているかどうかはわかりません(ベストプラクティス)。

だから問題:

次の構造を持つをView受け取るがあります。Model

public class MyViewModel
{
    public string Title { get; set; }
    public string Subtitle { get; set; }
    public string Property1 { get; set; }
    public string Property2 { get; set; }
    public string Property3 { get; set; }

    public List<MyItem> ListOne { get; set; }
    public List<MyItem> ListTwo { get; set; }
    public List<MyItem> ListThree { get; set; }
    public List<MyItem> ListFour { get; set; }
    public List<MyItem> ListFive { get; set; }
}

リストにレコードが含まれている場合にのみ、Viewそれぞれの最初のアイテムを表示したい。Listだから私が今やろうとしていることは、次のViewようなものです:

<div>
    @if(Model.ListOne != null)
    { 
        <img src="@Html.DisplayFor(model => Model.ListOne.First().Filename)" style="max-height: 800px;max-width:800px; padding-bottom: 5px;" />
    }
</div>

しかし、コードを実行すると、エラーが発生しSystem.InvalidOperationException: Sequence contains no elementsます。したがって、これは、私が理解しているように、ビューが最初に完全にレンダリングされ、その後、その中のコードが解析され、最終的な HTML 出力に変換されることを意味します (これはどのように機能するのでしょうか? ここでもいくつかの説明を使用できます)。

それで、これを達成するための最良の方法は何ですか?MVC を使用すると柔軟性が失われますか? 今のところ、そんな感じです。これは、コードを HTML と「混合」すると、はるかに簡単に実現できます。誤解しないでほしいのですが、デザイン パターンを使用することが開発者にもたらすメリットは非常に明白ですが、この特定の問題については、実際にどれほど柔軟なのか疑問に思っています。

4

1 に答える 1