我有一個控制器「MessageController」具有以下無爲法的公共方法:foreach語句,不包含「的GetEnumerator」
[ChildActionOnly]
public IEnumerable<string> BackwardsListOfElements()
{
var allMessages = _messageRepository.GetAll().ToList();
List<string> reversedMessages = new List<string>();
for (int i = allMessages.Count-1; i --> 0;)
{
reversedMessages.Add(allMessages.ElementAt(i).Subject + ": " + allMessages.ElementAt(i).Body);
}
IEnumerable<string> returnEnumerable = reversedMessages;
return returnEnumerable;
}
它從倉庫和挫折「消息」他們並忽略第一條消息。在我看來,我想將上面的「returnEnumerable」消息添加到列表中。以下是我的觀點代碼:
@model MyProject.UI.Models.MessageModel
@{
var BackwardsListOfElements = @Html.Action("BackwardsListOfElements", "Message");
}
...
<a class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
@foreach(var item in BackwardsListOfElements)
{
<li><a href="#">@Html.Label(item.Body)</a></li>
}
</ul>
</li>
BackwardsListOfElements被識別爲MvcHtmlString。我有一個編譯器錯誤讀取
foreach語句無法在類型「System.Web.Mvc.MvcHtmlString」的變量操作,因爲「System.Web.Mvc.MvcHtmlString」不包含「的GetEnumerator」一個公共定義。
是否有可能遍歷BackwardsListOfElements而不將我的模型聲明爲IEnumerable?這需要編寫我自己的foreach HTML助手嗎?是否有可能顯式聲明BackwardsListOfElements爲System.Collections.IEnumerable?
如果您需要更多信息,請讓我知道。預先感謝您的幫助。
This line var BackwardsListOfElements = @ Html.Action(「BackwardsListOfElements」,「Message」);是問題。你不需要這個工作。 – 2015-02-09 06:10:37
這是完成你的目標的非常愚蠢的方式。你有像viewbag,viewdata這樣的東西,爲什麼你不使用它們,或者如果你想訪問任何方法,然後建立一個控制器的對象並訪問它的公共方法。 – 2015-02-09 06:13:50