仮面ライダーの言葉では、UpdateModel()
は何をするのですか。TryUpdateModel()
は何ですか?私はそれが実際に何をしているのか(明確な言葉で)、それを使用するのに問題がある人だけを明確に説明することはできません。UpdateModel()は何をしますか?
VisualStudioのインテリセンスは私を助けてくれません。
[HttpPost]
public ActionResult Index(UserViewModel vm, FormCollection form)
{
var statesCheckBoxes = form["StatesList"];
vm.BA.StatesTraveledTo = statesCheckBoxes.Split(',').ToList<string>();
return View(vm);
}
は、私はすでにvm.BA.StatesTraveledTo
を設定することで、私のモデルを更新されていません。のは言わせ、ので、私は私のコントローラでこれを持っている場合、私が尋ねる理由は、ありますか?なぜ私はUpdateModelを実行する必要がありますか?また、ときに私が実際にやってみてください次:
[HttpPost]
public ActionResult Index(UserViewModel vm, FormCollection form)
{
var statesCheckBoxes = form["StatesList"];
vm.BA.StatesTraveledTo = statesCheckBoxes.Split(',').ToList<string>();
UpdateModel(vm); // IS THIS REDUNDANT TO THE PREVIOUS LINE?
return View(vm);
}
何も私は(私はのUpdateModel()を実行した後に)、私は何でもあることを示す何も表示されませんにModelStateの値を調べるときに起こるようですありません変更されました。 ModelState辞書に新しいキーが表示されません。
本当に混乱しています。ありがとう! ViewModelとモデルクラスのソースコードを投稿
:
編集ここ
public class UserViewModel
{
public BankAccount BA { get; set; }
}
public class BankAccount
{
public Person User { get; set; }
public List<string> StatesTraveledTo { get; set; }
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
ここにソースコードがあります:http://aspnet.codeplex.com/SourceControl/changeset/view/72551#266451これはかなり簡単ですが、ModelBindingContextを作成してバインドします –
また、多少ですあなたがアクションの入力として受け取ったものと同じオブジェクトをビューに渡すことはまれですが、それは起こりますが、まれですが、これはそのような用途の1つではありません。通常、投稿されたデータを表すオブジェクトを入力として受け取り、ビューの別のモデルを作成します。 –
ありがとうございます。モデルをビューに戻す理由は、検証目的のためです。したがって、検証に失敗した場合は、モデルとその値をビューに渡して、フォームフィールドが再生成され、エラーメッセージが表示されるようにします。申し訳ありませんが、私が示したコードでは、実際の例のようには見えません。 – SaltProgrammer