MVC строго типизированный Просмотр доступа к GetEnumerator () - PullRequest
1 голос
/ 06 августа 2010

Я очень новичок в MVC и ищу лучший способ обработки доступа к перечислителю следующего класса при использовании в качестве типа представления:

 public class TemplateCollection : IEnumerable<Template>
    {
        private IEnumerable<Template> templates;

        public TemplateCollection()
        {
            LoadTemplates();
        }

        public IEnumerator<Template> GetEnumerator()
        {
            return templates.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return templates.GetEnumerator();
        }
}

Мой взгляд (более или менее):

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TemplateCollection>" %>
<asp:Content  ContentPlaceHolderID="MainContent" runat="server">
           <%foreach(var template in ViewData ??) %>
</asp:Content>

Как получить доступ к перечислителю в цикле foreach? Или мне нужно создать контейнерный класс, который представляет мой TemplateCollection как свойство и обращается к этому представлению ViewDate ["TemplateCollection"]?

Спасибо

Ответы [ 2 ]

1 голос
/ 06 августа 2010

На самом деле вам не нужно определять новый класс типа коллекции для использования в качестве модели.Вы можете просто использовать:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Template>>" %>

Но в обоих случаях вы должны использовать свойство Model вместо свойства ViewData. Вот так:

<asp:Content  ContentPlaceHolderID="MainContent" runat="server">
           <%foreach(var template in Model) %>
</asp:Content>

Obs.Не используйте IEnumerable<TemplateCollection> или оно будет таким же, как IEnumerable<IEnumerable<Template>>, и я не думаю, что это то, что вы хотите.

0 голосов
/ 06 августа 2010

На самом деле довольно просто:

<%foreach (var template in Model) { } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...