2012-12-26 49 views
0

我需要幫助理解這個什麼是MembershipUserCollection.GetEnumerator的返回類型();

在我的控制器我有

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

我需要一個IEnumerator object來遍歷,但我不知道哪種類型的IEnumeratorMembershipUserCollection.GetEnumerator()回報。

我想這個IEnumerator傳遞給視圖,並有I'll使用Enumeratorforeach內:如果從它

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

剛剛返回集合。你爲什麼想要統計員?無論如何,您總是可以使用調試器進行檢查,或者只需單擊'GetEnumerator'方法上的F12即可查看返回類型。 – Mortalus

+0

如果'的IEnumerator 模型= ...'沒有對你抱怨,看起來就像你有一個'Enumerator'在'MembershipUserCollection'。 – NominSim

回答

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

+0

編譯器錯誤信息:CS1579:foreach語句不能在類型System.Collections.IEnumerator因爲系統的變量進行操作。 Collections.IEnumerator不包含GetEnumerator的公共定義。如果這是IEnumerator的主要目的,怎麼辦? –

+0

你需要迭代使用foreach(var item itemtype)。因爲GetEnumerator返回一個特定類型的集合 –

0

foreach迭代throught對象從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> 
+0

問題是模型MembershipUserCollection不可用,也沒有模型System.Web.Security.MembershipUserCollection。這就是爲什麼我在懷疑 –

+0

您可能需要提供完整的命名空間,而不是僅僅@model MembershipUserCollection – Dismissile

+0

看到我上次編輯 – lante

4

你的問題是假設正確,這個代碼的工作:

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

事實上,你應該這樣寫:

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

隨着那你的整個問題就變成了沒有實際意義。編譯器處理電話GetEnumerator的細節,而且,你已經使用了var關鍵字,則推斷循環變量的類型了。