2

前の質問を拡張すると、 EditorFor を使用して、タイプのオブジェクトのリストを編集しています (たとえば) Hobby

Hobby次に、ユーザーが趣味を追加できるように、個々のオブジェクトにエディターを追加する機能を実装する必要があります。

MVC 2 でこれを行う方法については、 Steven Anderson のブログを読みました。しかし、彼は EditorFor を使用するのではなく、ループと RenderPartial を使用して個々の Hobby インスタンスをレンダリングしています。Ajax 呼び出しを行って別の部分ビューをレンダリングし、ビューの結果を DOM に挿入するという彼のアプローチは理解できますが、私の場合、EditorFor を使用して Ajax add を適用する方法がわかりません。

彼のコード:

<% foreach (var item in Model)
    Html.RenderPartial("GiftEditorRow", item);
%>

私のコードは、次のように EditorFor を使用しています。

// Model is a List<Hobby>
@Html.EditorFor(model => model.AllowedSurveys)

エディターが部分ビューではなくエディター テンプレートとして実装されている場合、追加のホビー エディターを追加するにはどうすればよいですか?

4

1 に答える 1

3

エディター テンプレートを部分的に置き換えることができます。

@foreach (var item in Model.AllowedSurveys)
{
    Html.RenderPartial("_Hobby", item);
}

および部分 ( ~/Views/controllerName/_Hobby.cshtml) 内:

@model Hobby
<div class="editorRow">
    @using(Html.BeginCollectionItem("AllowedSurveys")) 
    {
        @Html.EditorFor(x => x.Name)
        ...
    }
</div>

カスタム ヘルパーは、Html.BeginCollectionItemGuid を使用して名前を生成するために使用され、JavaScript を使用してコレクションに新しいアイテムを並べ替えたり追加したりできます。更新された記事からダウンロードできます。あなたが読んでいたのは ASP.NET MVC 1 用で、廃止されました。

于 2012-06-14T05:37:52.550 に答える