我需要帮助理解这个
在我的控制器中我有
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())
{ ... }
答案 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