0

これは好みの問題かもしれませんが、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番目の方法は、すべてをまとめて保持するので、とても気に入っています。

4

1 に答える 1

1

ビューモデルを作成する私の方法は次のとおりです。

一部のクラスが1つのViewModelに対して一意である場合は、ネストする必要があります(外部コードからそのようなクラスにアクセスする理由はありません)。

このクラスをさまざまな方法で使用できる場合(たとえば、異なるビューモデルの同じエンティティ)、別々に配置する必要があります。

于 2012-06-22T13:58:51.863 に答える