7

Web アプリケーションをプレビュー 3 からベータ 1 に変換し、フレームワークの新しい機能を使用できるようにしようとしています。それらの 1 つが ModelBinding です。

この特定の状況のた​​めに、(今のところ) 一連の単純型プロパティの単なるコンテナーであるクラスを作成しました。多数のテキスト ボックスを含むフォームを作成する場合、フレームワークでこれらのフィールドを SearchBag インスタンスに入力する必要があります。

  • どこから始めればよいですか?この動作はすぐに使用できますか?それとも SearchBagBinder を実装する必要がありますか? 私は IModelBinder をざっと見てみましたが、それについて頭を悩ませることはできず、DefaultModelBinder ソースは私を賢くしません。
  • この ModelBindingContext とは何ですか?
  • フォーム フィールドにアクセスするにはどうすればよいですか?
  • 値がフォームではなく URL を直接入力して渡される場合はどうなるでしょうか。
  • これに関する最新情報はどこにありますか (ほとんどのブログは古くなっています)。かつて Phil の投稿を読んだと思っていたのですが、もう見つからないようです。

どんな助けでも大歓迎です。

4

1 に答える 1

3
  • どこから始めればよいですか?この動作はすぐに使用できますか?それとも SearchBagBinder を実装する必要がありますか? 私は IModelBinder をざっと見てみましたが、それについて頭を悩ませることはできず、DefaultModelBinder ソースは私を賢くしません。

箱から出してすぐです。UpdateModel または ModelBinder を使用して、目的を達成できます。

  • この ModelBindingContext とは何ですか?

これには、リクエストをモデルにバインドするために必要なすべての情報が含まれています。ControllerContext および ActionFilterContext と同様に、これは基本的に ModelBinder の状態であり、ModelBinder が何をすべきかについて ASP.NET MVC チームの推奨事項に従う場合、必要なことを行うために必要なすべての情報が含まれています。

  • フォーム フィールドにアクセスするにはどうすればよいですか?
context.HttpContext.Request.Forms["myformfield"];

また

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
  • 値がフォームではなく URL を直接入力して渡される場合はどうなるでしょうか。

Form と QueryString の両方をチェックする必要がある場合は、両方のコレクションをループするだけです。

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
foreach (var field in context.HttpContext.Request.QueryStrings.Keys) {
    var value = context.HttpContext.Request.QueryStrings[field];
}

または、Form、QueryString、Headers などを含む Param をループできます。

foreach (var field in context.HttpContext.Request.Params.Keys) {
    var value = context.HttpContext.Request.Params[field];
}
  • これに関する最新情報はどこにありますか? (ほとんどのブログは古くなっています)? かつて Phill の投稿を読んだと思ったのですが、もう見つからないようです。

おっしゃるとおり、ASP.NET MVC の PM である Phil は情報を得るのに最適な場所です。

于 2008-11-07T12:46:39.677 に答える