我正在学习MVC,我正在尝试为我的模型创建一个隐式类型变量,但不确定如何在视图中引用它@model IEnumerable<???>
...控制器
public ActionResult Users() {
var model = from MembershipUser u in Membership.GetAllUsers()
select new {user = u, roles = string.Join(", ", Roles.GetRolesForUser(u.UserName))};
View(model);
}
答案 0 :(得分:3)
您不能在视图中引用匿名类型的变量(或在其本地范围之外的任何位置)。可以使用动态类型:
@model IEnumerable<dynamic>
但是这样你就没有Intellisense /编译时类型检查;最好的方法是为你的模型创建一个类。
答案 1 :(得分:1)
这是一个你正在返回的匿名类型。我相信你会想要使用实际的类型。如果您没有在查询中选择的内容,则需要创建一个。
获得类型后,这是在视图中使用它的示例。
这是我认为的第一行:
@model IEnumerable<AutoTrackerCommon.Entities.TrackerJob>
我在WebGrid中使用它:
@{
var grid = new @WebGrid(
source: Model,
rowsPerPage: 10);
}
答案 2 :(得分:1)
您将其引用为Model
,但为什么会这样做呢?
使用ViewModel,不要使用无类型或隐式类型的模型。这是一个与之合作的噩梦:你失去了从IDE支持到自动验证的一切。不要不必要地使你的生活复杂化。视图模型(或强类型视图)是可行的方法。
阅读有关此内容的好文章:View Models in ASP.NET MVC。
希望这对你有帮助&amp;祝你好运