Вопрос

У меня есть модель сущности, которая содержит коллекцию объектов сообщений, которые имеют тип сообщения, которое имеет несколько свойств, включая содержимое, сообщение, из и к.

Однако я создал EditorteMplate для сообщения типа, однако, я не могу получить его для отображения содержимого коллекции сообщений.

Нет ошибок, но ничего не выводится.

Обратите внимание, что код просмотра из редактирования для родительского класса Tovingback. Можете ли вы иметь редакторов для вызова другого Editortemplate для детской коллекции?

Как класс Takeback, и Message генерируются структурой объекта из существующей базы данных.

Просмотр кода:

        <% foreach (TalkbackEntityTest.Message msg in Model.Messages)
    { 
           Html.EditorFor(x=> msg, "Message"); 
    } %>

Это мой код шаблона. Это стандартный автоматический сгенерированный код просмотра с некоторыми незначительными изменениями.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TalkbackEntityTest.Message>" %>

    <%: Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Fields</legend>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.MessageID) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.MessageID) %>
            <%: Html.ValidationMessageFor(model => model.MessageID) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.acad_period) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.acad_period) %>
            <%: Html.ValidationMessageFor(model => model.acad_period) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.talkback_id) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.talkback_id) %>
            <%: Html.ValidationMessageFor(model => model.talkback_id) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.From) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.From) %>
            <%: Html.ValidationMessageFor(model => model.From) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.To) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.To) %>
            <%: Html.ValidationMessageFor(model => model.To) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.SentDatetime) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.SentDatetime, String.Format("{0:g}", Model.SentDatetime)) %>
            <%: Html.ValidationMessageFor(model => model.SentDatetime) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.content) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.content) %>
            <%: Html.ValidationMessageFor(model => model.content) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.MessageTypeID) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.MessageTypeID) %>
            <%: Html.ValidationMessageFor(model => model.MessageTypeID) %>
        </div>

        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

Существует определенно содержимое в коллекции сообщений, что и если я удаляю Editorfor и вставьте в ответ. Направьте в свойство контента класса Сообщения, я получаю поле содержимого для 3 объектов сообщения на странице, который точно так же, как ожидается.

Это было полезно?

Решение

Вам не нужно foreach вручную. Просто поставьте файл под названием Message.ascx содержащий шаблон редактора, который вы показали внутри ~/Shared/EditorTemplates/ Папка и на вашем представлении просто включают в себя:

<%: Html.EditorFor(model => model.Messages) %>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top