これは好みの問題かもしれませんが、ViewModelsを作成するときは、以下のような複数のパブリッククラスを使用することをお勧めします(これらの3つのクラスは単一のビューのみを処理することに注意してください)。
namespace WebApp.Areas.Commerce.Models.ViewModels
{
public class TravellersViewModel
{
public TicketHolder TicketHolder { get; set; }
public List<Traveller> TicketMembers { get; set; }
public int MaxAge { get; set; }
public bool ShowAddress { get; set; }
}
public class TicketHolder
{
public string EmailAddress { get; set; }
public string TelephoneNumber { get; set; }
public string MobileNumber { get; set; }
public string Address1 { get; set; }
public string Postcode { get; set; }
public string Country { get; set; }
}
public class Traveller
{
public int Id { get; set; }
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public bool Policyholder { get; set; }
public Traveller()
{
Title = "Mr";
}
}
}
または、単一のビューモデルのスコープ内に子クラスをネストするのが最善ですか
namespace WebApp.Areas.Commerce.Models.ViewModels
{
public class TravellersViewModel
{
public TicketHolderDetails TicketHolder { get; set; }
public List<Traveller> TicketMembers { get; set; }
public int MaxAge { get; set; }
public bool ShowAddress { get; set; }
public class TicketHolderDetails
{
public string EmailAddress { get; set; }
public string TelephoneNumber { get; set; }
public string MobileNumber { get; set; }
public string Address1 { get; set; }
public string Postcode { get; set; }
public string Country { get; set; }
}
public class Traveller
{
public int Id { get; set; }
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public bool Policyholder { get; set; }
public Traveller()
{
Title = "Mr";
}
}
}
}
ビューモデルを構築する2番目の方法は、すべてをまとめて保持するので、とても気に入っています。