Pregunta

He conseguido un modelo de entidad que contiene una colección de objetos de mensaje que son del tipo de mensaje que tiene varias propiedades, incluyendo el contenido, MessageID, desde y a.

He creado una EditorTemplate para el tipo de mensaje, sin embargo, no puedo conseguirlo para mostrar el contenido de la colección de mensajes.

No hay errores, pero no hay ninguna emisión.

Tenga en cuenta que el código de la vista es de una EditorTemplate para la clase de intercomunicación de los padres. Se puede tener una EditorTemplate llamar a otro EditorTemplate para una colección de niños?

Tanto la intercomunicación y la clase de mensajes son generados por Marco de la entidad a partir de una base de datos existente.

Ver código:

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

Este es mi código de la plantilla. Es el código de la vista generada automáticamente estándar con algunos cambios menores.

<%@ 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>

No hay duda de contenido en la colección de mensajes como, si quito EditorFor y poner en response.write en la propiedad de contenido de la clase de mensaje, aparece el campo de contenido de objetos 3 mensaje en la página, que es exactamente como se esperaba .

¿Fue útil?

Solución

no es necesario foreach manualmente. Sólo hay que poner un archivo llamado Message.ascx que contiene el editor de plantillas que has demostrado dentro de la carpeta ~/Shared/EditorTemplates/ y en su opinión solo se incluyen:

<%: Html.EditorFor(model => model.Messages) %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top