5

ViewModel の使用を開始しようとしていますが、この POST が検証されないという問題が発生しています。モデルの値は、コードの下の Watch 部分に表示されます。

ModelStats.IsValid = false

モデル状態が無効です

私のItemViewModelは次のとおりです。

  public class ItemViewModel
  {
    public int ItemId { get; set; }
    [Display(Name = "Item")]
    public string ItemName { get; set; }
    [Display(Name = "Description")]
    public string Description { get; set; }
    [Display(Name = "Price")]
    public double UnitPrice { get; set; }
    [Range(0.00, 100, ErrorMessage = "VAT must be a % between 0 and 100")]
    public decimal VAT { get; set; }
    [Required]
    public string UserName { get; set; }
   }

単純なものになると確信していますが、長い間見ているだけなので、何が間違っているのかわかりません。誰でもアドバイスできますか?

ありがとう、マーク

4

2 に答える 2

13

検証の失敗に関する限り。

フォームで提供するつもりがない場合は、属性をUserName削除してください[Required]ItemViewModel


AutoMapperを使用するため。次のようなマップを作成する必要があります。

 Mapper.CreateMap<Item, ItemViewModel>();

そしてマップ

var itemModel = Mapper.Map<Item, ItemViewModel>(model);

注:CreateMap一度だけ作成する必要があります。スタートアップ時に登録する必要があります。AutoMapper の使用方法をお読みください。.

于 2013-05-10T07:58:16.123 に答える
1

ItemViewModelItemクラスに同じフィールドがあるかどうかを確認してください。同じデータ型を持つ同じフィールドの場合、AutoMapper は正常に動作します。

Mapper.CreateMap< Item, ItemViewModel>();

Mapper.Map< Item, ItemViewModel>(ItemVM);

フィールドが両方のクラスで同じでない場合は、カスタム マッピングと同じであることを確認してください。

Mapper.CreateMap<UserDM, UserVM>().ForMember(emp => emp.Fullname,
map => map.MapFrom(p => p.FirstName + " " + p.LastName));

上記のカスタム マッピングでは、とマッピングされるフィールドFullnameはフィールドです(ここではドメイン モデル、ビュー モデル)。UserVMFirstNameLastNameUserDMUserDMUserVM

于 2016-06-07T12:19:25.853 に答える