私は2つの他のモデル含み、以下のViewModelがあります。私のビューはこのようになりますASP.NET MVC:1つのビューで複数のモデルを使用するにはどうすればよいですか?
public class ViewModel
{
public ViewModel1 viewModel1 { get; set; }
public ViewModel2 viewModel2 { get; set; }
}
を:
@Html.TextBoxFor(m => m.viewModel1.NameOfCustomer)
@Html.TextBoxFor(m => m.viewModel2.ProductCategory)
そして最後にコントローラ:
public ActionResult CreateNewOrder(ViewModel viewModel)
{
Model1 myModel1 = new Model1()
{
NameOfCustomer = viewModel.viewModel1.NameOfCustomer
};
db.Orders.Add(myModel1);
db.SaveChanges();
return View(viewModel);
}
問題があれば、ありますViewModelから実際のモデルに渡すためにデータを取りたいのですが、動作しません。値としてnullを表示するだけです。私は、コントローラのデータを次のように変更を行う場合があるが、これはそれが必要として動作しません:
public ActionResult CreateNewOrder(ViewModel viewModel)
{
// that works
viewModel.viewModel1.NameOfCustomer = "John John";
Model1 myModel1 = new Model1()
{
myModel1.NameOfCustomer = viewModel.viewModel1.NameOfCustomer
};
db.Orders.Add(myModel1);
db.SaveChanges();
return View(viewModel);
}
だから私は問題があると思い、私の見解から私のデータは私のViewModelに正しく送信されていません。私はあなたが間違って何をしているのかをヒントに伝えてくれることを願っています。これが事実であるように@Stephen Mueckeさんのコメント次
よろしく、
「ちょうど値としてnullが表示されています。 viewModelはnullか、モデル自体のプロパティはnullですか? –
異なるViewModelデータを異なるアクションに投稿できます。 '/ vm1'と' ViewModel2'をアクション '/ vm2'に' ViewModel1'データと同じようにします –
タプルを使って複数のモデルをビューに送ることができます。 – Bharat