質問

コンテンツ、MessageID、from、toなどの複数のプロパティを備えたタイプメッセージのメッセージオブジェクトのコレクションを含むエンティティモデルを持っています。

Typeメッセージ用のeditortemplateを作成しましたが、メッセージコレクションの内容を表示することはできません。

エラーはありませんが、出力はありません。

ビューコードは、親トークバッククラスの編集編集からのものであることに注意してください。子供のコレクションの別の編集を呼び出す編集編集を持っていますか?

トークバッククラスとメッセージクラスの両方は、既存のデータベースからエンティティフレームワークによって生成されます。

コードを見る:

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