我是asp.net&的新手我正在尝试使用asp.net mvc 4& EF6,我需要两个模型在同一视图下工作。我已经尝试了很多,但无法弄清楚如何使这项工作。这是我的代码,
控制器
public ActionResult AfterLogin()
{
if (Session["UserNAME"] != null)
{
var firstmodel = new MyViewModel { stats = db.stats.ToList() };
var secondmodel = new MyViewModel { mans = db.mans.ToList() };
return View(firstmodel); //How can I also add the "secondmodel"?
}
else
{
return RedirectToAction("Login");
}
}
模型
public class MyViewModel
{
public IEnumerable<stat> stats { get; set; }
public IEnumerable<man> mans { get; set; }
}
如何同时使用这两种型号?非常需要这个帮助。 TNX。
答案 0 :(得分:3)
制作包含两者的模型
public class CombinedModel
{
public MyVieModel Model1 {get;set;}
public MyVieModel Model2 {get;set;}
}
将其用于视图
public ActionResult AfterLogin()
{
if (Session["UserNAME"] != null)
{
var firstmodel = new MyViewModel { stats = db.stats.ToList() };
var secondmodel = new MyViewModel { mans = db.mans.ToList() };
return View(new CombinedModel(){
Model1 = firstmodel,
Model2 = secondmodel
}); //
}
else
{
return RedirectToAction("Login");
}
}
答案 1 :(得分:3)
您只能绑定到一个模型。
创建一个包含您要使用的两个模型的新模型。
public class AfterLoginModel
{
public MyViewModel Stats { get; set; }
public MyViewModel Mans { get; set; }
}
或者在您的情况下,由于它们是完全相同的模型,您还可以设置stats
和mans
属性并传入单个MyViewModel。
var model = new MyViewModel {
stats = db.stats.ToList(),
mans = db.mans.ToList()
};
return View(model);
答案 2 :(得分:0)
Brandon和Jamiec的答案对于这种情况肯定更好,但如果您真的不想更改模型或创建新类,那么您始终可以将数据添加到{{1 }}。在您的Controller方法中:
ViewBag
然后在视图中你可以这样称呼它:
ViewBag.SecondModel = new MyViewModel { mans = db.mans.ToList() };
请注意,您需要使用强制转换,因为@{
MyViewModel secondModel = (MyViewModel) ViewBag.SecondModel;
}
中的任何内容都是动态输入的。