0

以下の AutoMapper マッピング構成クラス コードを作成しました。

public static class MilitaryBrochureViewModelMapper
{
    public static void Configure()
    {
        ConfigureMilitaryBrochureMapping();
    }

    private static void ConfigureMilitaryBrochureMapping()
    {
        Mapper.CreateMap<IBrochureModel, MilitaryBrochureViewModel>().ForMember(dest => dest.Rank, opt => opt.MapFrom(src => src.JobTitle));
    }
}

MilitaryBrochureViewModel のフィールド Rank を IBrochureModel インターフェイスの変数 JobTitle にマッピングしています MilitaryBrochureViewModel に移動すると、インターフェイスを完全に実装していないことがわかります。これら 2 つの変数間のマッピングを作成するために AutoMapper を使用しましたか?

以下は、私が使用している ViewModel と Interface です。

ビューモデル

public class MilitaryBrochureViewModel : IBrochureModel
{
    [Key]
    public int Id { get; set; }

    public virtual int TestMode { get; set; }

    [DataType(DataType.Text)]
    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [Display(Name = "Salutation", Description = "Salutation_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
    public string Salutation { get; set; }

    [DataType(DataType.Text)]
    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [Display(Name = "First_Name", Description = "First_Name_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
    [RegularExpression(@"^([\u00c0-\u024f]|[A-z]|[']|[ ]|[\-]){2,20}$", ErrorMessageResourceName = "FirstNameRegExError", ErrorMessageResourceType = typeof(Mui))]
    public string FirstName { get; set; }

    [DataType(DataType.Text)]
    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [Display(Name = "Last_Name", Description = "Last_Name_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
    [RegularExpression(@"^([\u00c0-\u024f]|[A-z]|[']|[ ]|[\-]){2,20}$", ErrorMessageResourceName = "LastNameRegExError", ErrorMessageResourceType = typeof(Mui))]
    public string LastName { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email", Description = "Email_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
    [RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessageResourceName = "EmailInputValidatorError", ErrorMessageResourceType = typeof(Mui))]
    public virtual string Email { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [DataType(DataType.Text)]
    [Display(Name = "Military_Rank", Description = "Military_Rank_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
    [StrMinLen(5)]
    [StrMaxLen(50)]
    public string Rank { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [DataType(DataType.Text)]
    [Display(Name = "Company", Description = "Company_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
    public string Company { get; set; }

    [Required]
    [Display(Name = "Do_Not_Pass_On", Description = "Do_Not_Pass_On_Description", GroupName = "Company", ResourceType = typeof(Mui))]
    public bool DoNotPassOn { get; set; }

    [DataType(DataType.Text)]
    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [Display(Name = "Lead_Source", GroupName = "Terms", Description = "Lead_Source_Description", ResourceType = typeof(Mui))]
    public string LeadSource { get; set; }
}

インターフェース

public interface IBrochureModel
{
    int TestMode { get; set; }

    string Salutation { get; set; }
    string FirstName { get; set; }
    string LastName { get; set; }
    string Email { get; set; }
    string Company { get; set; }
    string JobTitle { get; set; }
    string LeadSource { get; set; }
    bool DoNotPassOn { get; set; }
}
4

3 に答える 3

0

インターフェイスには member が必要ですstring JobTitle { get; set; }。にそのようなメンバーはいませんMilitaryBrochureViewModel。C# コンパイラは、AutoMapper によるあるプロップから別のプロップへの変換を気にしません。インターフェイスを実装しているが、インターフェイス メンバーの 1 つが欠落しているクラスがあるため、エラーが発生するだけです。

于 2013-03-26T12:03:31.620 に答える
0

このアプリケーションの以前のバージョンで行った方法に変更しましたランクをジョブタイトルに変更しましたが、ランクとジョブタイトルは両方ともジョブタイトルとしてデータベースに送信されるため、唯一の違いは表示名です。

    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
    [DataType(DataType.Text)]
    [Display(Name = "Military_Rank", Description = "Military_Rank_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
    [StrMinLen(5)]
    [StrMaxLen(50)]
    public string JobTitle { get; set; }
于 2013-03-26T12:30:08.447 に答える
0

ビューモデルに以下の行を追加します。

public string JobTitle { get; set; }

このようにして、ビューモデルにはランク役職があります。

どのフィールド JobTitle または Ran を表示するかをビューで制御できます

于 2013-03-26T12:26:06.950 に答える