2011-03-17 29 views
1

ないかと単語この正しく.. てくださいので、私はと強く型付けされたのviewmodelを持って眺めていた:i MyViewModelとinitalビューをロードして使用していpartialviewモデル更新親ビュー

class MyViewModel 
{ 
    public string MyName get; set; 
    public string DateOfBirth get; set; 
    public Address MyAddress get; set; 
} 

class Address 
{ 
    public string Street get; set; 
    etc... 
} 

を(アドレス入力を再利用できるように)アドレスをロードするための部分的な表示を表示します。すべてのgreat..andを作品

$.get('/User/DisplayAddress/', {'selection': selection }, function (html) { 

$('#addressBlock').html(html); 

}); 

ビューがダウン、次の処理を行いAjaxの.change関数を呼び出すドロップで値を選択し、内のユーザー名のリストをドロップダウンリストが含まれていますhtmlがロードされます。ただし、viewmodelとアドレスは現在切断されています。私のページを送信するとき、ViewModelのMyAddressにnullが含まれるようになりました。

mvc2/ajaxで正しくこれを行う必要がありますか?

私が使った別のアプローチは '<% RenderPartial("viewname", Model.MyAddress); %> ですが、私はまだjsonでデータを返して、フィールドに手動でjava関数で値を追加する必要があります。 MyAddressフィールドにいくつかのフィールドが含まれていて、入力フィールドに値を追加するのは面倒です。

答えて

1

部分的にHTMLを挿入すると、問題がバインドされてしまっていました。 私の部分的なビューは同じ名前空間に従わなかったので、入力フィールドは親ビューモデルへのバインディングを失いました。

すなわち私のテキストボックスには、今の命名規則MyViewModel.Address.Streetなど

私はHTMLでのdivコンテナを交換するためにjqueryのアプローチを使用しています。問題は、HTMLを表示するときに拘束されていたということでした。

inputmodelと同じものを使用するようにテキストボックスの 'name'要素を設定しました。これは、部分文字列を挿入するときにバインディングを保持しました。

理想的には、この「継承」アプローチの代わりに「フラット」ビューモデルを使用しますが、このインスタンスではできませんでした。

関連する問題