私は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 と「混合」すると、はるかに簡単に実現できます。誤解しないでほしいのですが、デザイン パターンを使用することが開発者にもたらすメリットは非常に明白ですが、この特定の問題については、実際にどれほど柔軟なのか疑問に思っています。