asp.net mvc 3での編集アクションの実装

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

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

0

1 答え

必要なフィールドのみを更新する最も良い方法は、別のビューモデルを作成することです。たとえば、次のようなユーザークラスがあるとします

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

And suppose you do not wish to let user supply value for IsAdmin property. You create view model like this (no IsAdmin field)

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を供給することはできません。また、 AutoMapper Jimmy Bogardのブログを参照してください。ジミーは、asp.net mvcでもViewModelsとAutoMapperを使うことについての記事を手に入れました。

1
追加された
UpdateModelとTryUpdateModelはどのように機能しますか?彼らはどのデータプロバイダを使用していますか? EdituserViewModelをビューとバインドする方法は?
追加された 著者 Alexandre,
UpdateModelとTryUpdateモデルのバインディングについての情報はどこにありますか?リンクを教えてください。私はそれについて何も発見していない。
追加された 著者 Alexandre,
ビューの@modelはEditUserViewModelであり、通常はそのためのエディタを生成する必要があります。そして私はデータプロバイダについて理解していません、あなたは価値プロバイダを意味しますか? UpdateModelモデルとTryUpdateモデルは、バインディングを実行する初期オブジェクトを取ります
追加された 著者 archil,
なぜあなたはそれらを必要としますか? MSDNは小さくても十分な文書を持っています。これらは手動でバインディングプロセスを呼び出すために使用されます。
追加された 著者 archil,