2011-10-28 15 views
0

私はasp.net mvc 3の編集アクションの多くの例を見て、それが私が混乱している理由です。たとえば、UpdateModelメソッドとTryUpdateModelメソッドはどのように動作しますか?または、すべてのフィールドではなく更新する場合は、編集アクションを実装する方法は?asp.net mvc 3で編集アクションを実装する

誰でも私にasp.net 3の編集アクションの実装に関するリンクを教えてもらえますか?

答えて

1

目的のフィールドのみを更新する最もよい方法は、別のビューモデルを作成することです。たとえば、あなたがこの

public class User 
{ 
    public int Id {get;set;} 
    public string UserName {get;set} 
    public bool IsAdmin {get;set;} 
} 

のようにユーザークラスを持って、あなたはIsAdmin財産に対するユーザ供給値聞かせしたくないと仮定してきました想像してみてください。あなたはこの(無IsAdminフィールド)のようなビューモデル

public class EditUserViewModel 
{ 
    public int Id {get;set;} 
    public string UserName {get;set} 
} 

そして編集アクション擬似何か

public ActionResult Edit(EdituserViewModel model) 
{ 
    If(ModelState.IsValid) 
    { 
     User user = _repository.GetUser(model.Id); 
     user.UserName = model.UserName; 
     _repository.Update(user); 
     return RedirectToAction("Index"); 
    } 
    return View(model); 
} 

この方法を作成、クライアント側からIsAdminを供給するために何possiblityはありません。ビューモデルをドメインモデルにマッピングする場合は、AutoMapperJimmy Bogard's blogを参照してください。ジミーは、asp.net mvcでもViewModelsとAutoMapperを使うことについての記事を手に入れました。

+0

UpdateModelとTryUpdateModelはどのように機能しますか?彼らはどのデータプロバイダを使用していますか? EdituserViewModelをビューとバインドする方法は? – Alexandre

+0

ビューの@modelはEditUserViewModelで、通常はそのためのエディタを生成する必要があります。そして私はデータプロバイダについて理解していません、あなたは価値プロバイダを意味しますか? UpdateModelモデルとTryUpdateモデルは、バインディングを実行する初期オブジェクトを取る – archil

+0

UpdateModelとTryUpdateモデルのバインディングについての情報はどこにありますか?リンクを教えてください。私はそれについて何も発見していない。 – Alexandre

関連する問題