0

このようなビューモデルがあるとします

class MyView
{
    DynamicViewModel MyDynamicViewModel {get; set;}
}

class DynamicViewModel 
{
    string A {get; set;};
}

実際のビュー マークアップでは、MyView を読み込みます。再利用可能にしたいので、DynamicViewModel の EditorTemple 部分ビューがあり、それ自体にもいくつかの動的要素があります。

また、MyView ページには、MyDynamicViewModel のコンテンツを決定する独自のフォーム要素があります。したがって、ユーザーの入力/クリックに応じて、MyDynamicViewModel は ajax コールバックを介して新しい情報でリロードされます。

これは機能しますが、DynamicViewModel は動的に読み込まれるため、MVC モデル バインダーは、DynamicViewModel の値が MyView.MyDynamicViewModel のモデルに属していることを認識できません。

たとえば、MyDynamicViewModel.A のフォーム値のフォーム ID は「A」になります。しかし、バインドをモデル化するには、次のように MyDynamicViewModel.A にする必要があります。

<input id="MyDynamicViewModel.A" name="MyDynamicViewModel.A" type="text"> 

しかし、このテンプレートは ajax 経由で読み込まれます (コントローラー メソッドはビューを文字列として返し、javascript はコンテンツで div を更新するだけです)、「所有者」モデル MyView については知りません

4

2 に答える 2

0

コード全体を見ないと、あなたの質問を理解するのに少し苦労しています。

私の理解では、Ajax 呼び出しから戻った後、html 文字列のidand属性を設定できるはずです。name

http://jsfiddle.net/q7dLy/

コレクションを含むフォームなど、より複雑なビュー モデルを扱っている場合でも、 ASP.net ワイヤ フォーマットidに従って適切なname属性をセットアップできるはずです。

于 2013-08-20T20:58:01.833 に答える