这是控制器:
public ActionResult Index()
{
var result = from u in myContext.Users
join g in myContext.Groups
on u.gid equals g.id
select new {
u.username,
g.name
};
return View(result );
}
这是视图
@model IEnumerable<eTravel1.Models.User>
...
@Html.DisplayNameFor(model => model.username)
@Html.DisplayNameFor(model => model.name)
..
返回的匿名数据在View中不兼容。 如果有人可以给出一些建议,我会真的很赞成。感谢
答案 0 :(得分:3)
您应该像这样创建一个ViewModel类:
public class UserViewModel{
//class constructor
public UserViewModel(String userName_p, String name_p){
this.UserName = userName_p;
this.Name = name_p;
}
//class attributes
String UserName {get; set;}
String Name {get; set;}
}
创建该类的对象:
var result = from u in myContext.Users
join g in myContext.Groups
on u.gid equals g.id
select new UserViewModel(
u.username,
g.name
);
最后,以同样的方式将此对象传递给您的视图:
//returning an IEnumerable<UserViewModel> data type
return View(result.AsEnumerable());
在您的视图中,您应该期望这种完全相同的数据类型:
//change the UserViewModel to your complete namespace!
@model IEnumerable<UserViewModel>
我强烈建议您阅读有关“ViewModel最佳实践”的this stackoverflow问题。
希望它有所帮助!