如何在视图中引用隐式类型模型

时间:2012-08-22 01:52:35

标签: c# asp.net-mvc asp.net-mvc-4

我正在学习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);
}

3 个答案:

答案 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;祝你好运