3

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

3 回答 3

3

您不能在视图中(或其本地范围之外的任何地方)引用匿名类型变量。可以使用动态类型:

@model IEnumerable<dynamic>

但是这样你就没有智能感知/编译时类型检查;最好的方法是为您的模型创建一个类。

于 2012-08-22T02:00:19.610 回答
1

那是您要返回的匿名类型。我相信您会想要使用实际类型。如果您在查询中选择的内容没有一个,则需要创建一个。

一旦你有了你的类型,下面是一个在视图中使用它的例子。

这是我认为的第一行:

@model IEnumerable<AutoTrackerCommon.Entities.TrackerJob>

我在 WebGrid 中使用它:

@{
    var grid = new @WebGrid(
        source: Model,
        rowsPerPage: 10);
}
于 2012-08-22T01:57:20.053 回答
1

您将其称为Model,但您为什么要这样做?使用 ViewModel,不要使用无类型或隐式类型的模型。这是一场噩梦:你失去了从 IDE 支持到自动验证的一切。不要让你的生活不必要地复杂化。视图模型(或强类型视图)是要走的路。

值得阅读的好文章:在 ASP.NET MVC 中查看模型

希望这对您有帮助并祝您好运

于 2012-08-22T02:04:31.767 回答