سؤال

لدي نموذج كيان يحتوي على مجموعة من كائنات الرسائل التي هي من رسالة النوع التي تحتوي على العديد من الخصائص ، بما في ذلك المحتوى ، MessageId ، من ، إلى.

لقد قمت بإنشاء رسالة تحرير لرسالة النوع ، ومع ذلك ، لا يمكنني الحصول عليها لعرض محتويات مجموعة الرسائل.

لا توجد أخطاء ، ولكن لا يوجد شيء مخرج.

يرجى ملاحظة أن رمز العرض هو من editortemplate لفئة Talkback Parent. هل يمكن أن يكون لديك تحرير editortemplate استدعاء editortemplate آخر لمجموعة الأطفال؟

يتم إنشاء كل من Talkback و Smitly Class بواسطة إطار الكيان من قاعدة بيانات موجودة.

عرض الرمز:

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

هناك بالتأكيد محتوى في مجموعة الرسائل ، إذا قمت بإزالة المحرر ووضعها استجابة. اكتب على خاصية المحتوى لفئة الرسائل ، أحصل على حقل المحتوى لثلاثة كائنات رسائل على الصفحة ، وهو ما هو متوقع تمامًا.

هل كانت مفيدة؟

المحلول

لا تحتاج إلى foreach يدويًا. فقط ضع ملفًا يسمى Message.ascx يحتوي على قالب المحرر الذي أظهرته داخل ~/Shared/EditorTemplates/ المجلد وفي رأيك فقط قم بتضمينه:

<%: Html.EditorFor(model => model.Messages) %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top