C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.74340 の関連記事表示

<< 0 >>
■74340  Re[5]: Asp.net Mvc データ登録方法について
□投稿者/ ainax -(2014/12/19(Fri) 01:47:28)
    No74339 (WebSurfer さん) に返信

    夜遅くにも関わらずお返事いただき誠にありがとうございます。

    > その実装では、モデルバインディングとデータアノテーション検証(クライアントサイド
    > を含む)がうまくいかないように見えますが、いかがですか?
    たしかにモデルのバインディングはきちんと出来ていません。
    コントローラで VMParent を引数にとり中身を見てみると VMChild が取得できていません。
    その回避策として、 VMChild は 部分ビューの中で TempData["Children"] = Model として代入し、
    コントローラで TempData から Model を引っ張ってきています。

    > 今回のようなコレクションのモデルバインディングがうまく行われるようにするには、以
    > 下のページに書いてあるように、レンダリングされる html 要素の name 属性の設定が問
    > 題になるのですが、そのあたりは考えられているでしょうか?
    >
    name 属性の設定については先にご紹介いただいた URL 先にて次のようにすればバインディングされると考えています。
    VMParent の Name プロパティ: <input name="Name" 〜〜>
    VMParent.List<VMChild> 内のの Name プロパティ: <input name="Children[0].Name 〜〜>

    現在は、HTML.BeginForm で VMParent の Name 登録を行っており、
    VMChild は Ajax.BeginForm で VMChild.Name を動的に追加削除した結果をフォームの更新に使っております。

    HTML.BeginForm 内に VMChild を設定できずそのため、 HTML.BeginForm で呼び出される
    Create メソッドにて parent.Children が取得できませんでした。

    一応 HTML.BeginForm 内に Ajax.BeginForm を置いてみたのですが、 Form 内の Form は正しく認識されない様で
    失敗に終わってしまいました。

    (と、ここでいま思いついたのですが、Ajax.BeginForm で VMParent も VMChild も更新してしまうのが正解でしょうか?
    明日検証してみたいと思います。)

    > コレクションのデータアノテーション検証
    > http://surferonwww.info/BlogEngine/post/2014/09/01/validation-of-collection-data-during-model-binding-using-data-annotation.aspx
    申し訳ありませんが、ご紹介頂いた URL 先についても明日拝見させて頂ければと思います。

    > モデルバインディングがうまくいかなければ、そのあとの DB への登録もうまくいくはず
    > はないです。
    一応 Create メソッド内でデバッグ中に変数の中をのぞいてみたところ、
    VMParent も VMChild も必要なデータを取得していたことを確認致しました。

    ただ、きちんとモデルバインディングが可能であれば、やはりそれを実現したいと思います。

    取り急ぎ、現状のご報告をさせて頂きましたが、
    明日にでもご紹介頂いた URL を拝見後にきちんとご報告させて頂ければと思います。
記事No.74261 のレス /過去ログ125より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -