Domanda

Io ho un modello Entità che contiene una collezione di oggetti di messaggio che sono del tipo di messaggio, che ha diverse proprietà, compresi i contenuti, MessageID, da e per.

Ho creato un EditorTemplate per il tipo di messaggio, però, non posso farlo per visualizzare il contenuto della raccolta dei messaggi.

Non ci sono errori, ma nulla è uscita.

Si noti che il codice di vista è da un EditorTemplate per il genitore di classe Talkback. Si può avere un EditorTemplate chiamare un altro EditorTemplate per una collezione bambino?

Sia il Talkback e la classe del messaggio sono generati da Entity Framework da un database esistente.

Visualizza codice:

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

Questo è il mio codice del template. E 'il codice della vista generato automaticamente di serie con alcune lievi modifiche.

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

C'è sicuramente contenuto nella raccolta messaggio come, se tolgo EditorFor e mettere in Response.Write sulla proprietà contenuti della classe Messaggio, ottengo il campo dei contenuti per 3 Messaggio oggetti sulla pagina, che è esattamente come ci si aspetta .

È stato utile?

Soluzione

Non c'è bisogno di foreach manualmente. Basta mettere un file chiamato Message.ascx contenente l'editor di modelli hai mostrato all'interno della cartella ~/Shared/EditorTemplates/ e nella vista solo includerlo:

<%: Html.EditorFor(model => model.Messages) %>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top