2011-07-25 9 views
1

私はこの特定のビューモデルをビューモデルとコレクションで使用しています。ポストバックを呼び出す保存ボタンをクリックすると、viewmodel内でビューモデルとコレクションを取得できません。私はそれを得ることができる関数のパラメータでビューモデルとコレクションを宣言する必要があります。 viewmodelをビューモデルとコレクションで完全にする方法はありますか?MVC3 C#ViewModel on Postback保存用

私は私のコントローラにポストバックしようとしたとき、私は、この顧客のViewModel

public class CustomerViewModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public PersonInfoViewModel PersonInfoViewModel { get; set; } 
    public ICollection<PurchasesViewModel> PurchasesViewModel { get; set; } 
} 

を持っている:

[HttpPost] 
public ActionResult New(FormCollection collection, CustomerViewModel customerViewModel, PersonInfoViewModel personInfoViewModel, ICollection<PurchasesViewModel> purchasesViewModel) 
{ 
    customerViewModel.PersonInfoViewModel = personInfoViewModel; 
    ... 
} 

私はのviewmodelsとコレクションが部分図を使用してレンダリングされていることを言及するのを忘れてしまいました。ありがとう

+0

と呼ばれるビューを作成する必要がありますいくつかのコントローラとビューコードを投稿してください私はより具体的にあなたが話しているのを見ることができますか? – davecoulter

+0

私はこの顧客を持っていますviewModel パブリッククラスCustomerViewModel { \t public int Id {get;セット; } \t public string Name {get;セット; } \tパブリックPersonInfoViewModel PersonInfoViewModel {get;セット; } \tパブリックICollection PurchasesViewModel {get;セット; }} 私はコントローラにポストバックしよう: [HttpPost] 公共のActionResult新しい(FormCollectionコレクション、CustomerViewModel customerViewModel、PersonInfoViewModel personInfoViewModel、ICollectionを purchasesViewModel) {\t customerViewModel.PersonInfoViewModel = personInfoViewModel。 \t ... } – Badz

+0

@Badz、あなたは本当に元の質問を編集し、そこにコードを入れてください。コメントのように読むことができません – musefan

答えて

0

ViewModelでViewModelのレンダリングにRenderPertialを使用することはできません。

あなたは、共有フォルダまたはあなたがサーフィンをしているフォルダ内のいずれかで、EditorTemplatesという名前のフォルダを作成後@Html.EditorFor(model => model.PurchasesViewModel)

を使用する必要があります。

次に、そのフォルダにViewModels名でビューを作成する必要があります。だからあなたの状況では、PurchasesViewModel

+0

@ Html.Partialとは違いますか?私は私の見解でこれを使用しています。 – Badz

+0

部分ビューは何でも使用できますが、モデルは必要ありません。たとえば、多くの時間に戻ってくる小さなテキストには部分的な部分を使うことができます。 EditorForにはモデルが必要ですが、これを使わないと使用できません。 –

+0

私はあなたの解決策を試してみましょう。答えが返ってきたら、解決策になりました。 – Badz

関連する問題