MembershipUserCollection.GetEnumerator()的返回类型是什么;

时间:2012-12-26 14:52:28

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

我需要帮助理解这个

在我的控制器中我有

MembershipUserCollection usersObj = Membership.GetAllUsers();
IEnumerator<MembershipUserCollection> model = usersObj.GetEnumerator();
return PartialView(model );

我需要IEnumerator object进行迭代,但我不确定哪种类型的IEnumerator MembershipUserCollection.GetEnumerator()会返回。

我想将此IEnumerator传递给视图,我会在Enumerator内使用此foreach

 @foreach (var membershipUser in Model.getEnumerator())
 { ... }

3 个答案:

答案 0 :(得分:4)

您的问题错误地认为此代码有效:

@foreach (var membershipUser in Model.getEnumerator()) { ... }

事实上,你应该这样写:

@foreach (var membershipUser in Model) { ... }

有了这个,你的整个问题就变得毫无意义了。编译器处理调用GetEnumerator的细节,并且,当您使用var关键字时,它也会推断出循环变量的类型。

答案 1 :(得分:0)

foreach遍历从IEnumerable接口继承的对象,因此如果MembershipUserCollection继承自它(和it does),则可以将其传递给模型应该工作。

MembershipUserCollection usersObj = Membership.GetAllUsers();
return PartialView(usersObj);

并在视图中

@model System.Web.Security.MembershipUserCollection

<h2>Users</h2>
<ul>
    @foreach(var u in Model)
    {
        <li>u.UserName</li>
    }
</ul>

答案 2 :(得分:0)

GetEnumerator()返回循环访问集合的枚举器。

收藏必须符合以下要求:

The collection type:
    1. Must be one of the types: interface, class, or struct.
    2. Must include an instance method named GetEnumerator that returns a type, for example, Enumerator.

The type Enumerator (a class or struct) must contain:
   1. A property named Current that returns ItemType or a type that can be converted to it. The property accessor returns the current element of the collection.

有关更多信息,请参阅以下链接: http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.getenumerator.aspx