Frage

Ich habe ein Entity-Modell bekam die eine Sammlung von Message-Objekte darstellen, die bei der Art der Nachricht sind, die mehrere Eigenschaften, einschließlich Inhalt, MessageID, von und zu.

Ich habe eine EditorTemplate für Typ Nachricht erstellt, aber ich kann sie nicht den Inhalt der Nachrichten Sammlung angezeigt werden soll.

Es gibt keine Fehler, aber nichts ausgegeben.

Bitte beachten Sie, dass die Ansicht Code aus einer EditorTemplate für die übergeordnete Talkback-Klasse ist. Können Sie ein EditorTemplate haben eine andere EditorTemplate für ein Kind Sammlung nennen?

Sowohl die Talkback und Message-Klasse werden durch Entity Framework aus einer bestehenden Datenbank.

Sehen Sie den Code ein:

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

Das ist mein Template-Code. Es ist der Standard automatisch generierte Ansicht Code mit einigen geringfügigen Änderungen.

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

Es ist auf jeden Fall Inhalt im Nachrichtensammlung wie, wenn ich EditorFor entfernen und in response.write auf den Inhalt Eigenschaft der Message-Klasse setzen, ich den Inhalt Feld erhalten für 3 Meldung auf der Seite Objekte, die genau wie erwartet .

War es hilfreich?

Lösung

Sie müssen nicht manuell foreach müssen. Legen Sie einfach eine Datei Message.ascx mit dem Editor-Vorlage genannt Sie innerhalb des ~/Shared/EditorTemplates/ Ordner gezeigt haben und in der Ansicht nur sie sind:

<%: Html.EditorFor(model => model.Messages) %>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top