0

こんにちは私はajax-callsを使用してパーシャルビューを取得するときに正しいIDと名前を取得するのに問題があります。

「Blocks_0__Items_0__Id」のようなIDが必要です。これらはforループを使用してレンダリングされるため、メインページは次のとおりです。

@for (int blockIndex = 0; blockIndex < Model.Block.Count(); blockIndex++) {

                @Html.EditorFor(model => Model.Blocks[blockIndex], "BlockView")
            }

次に、BlockViewは、editorforを使用してアイテムに対して同じリストレンダリングを実行します。forループは、IDと名前を正しくします。

ただし、アイテムテンプレートを部分ビューとしてレンダリングしたい場合は、ブロックとアイテムの部分がないのが自然です。

この問題を解決するために、常に単一のアイテムを含むブロックをレンダリングする空のメインページを呼び出します。しかし、これは、ajaxを介して挿入し、modelbinderで読み取りたいものについては、2つの追加の部分ビューを作成する必要があることを意味します!!

解決策2ViewData.TemplateInfo.HtmlFieldPrefixメソッドを使用して設定することだと思いました。しかし、私はリストを含むリストを持っているので、それは不可能です。部分ビューの1つを削除して、次を使用できます:ViewData.TemplateInfo.HtmlFieldPrefix = "Block"

Html.BeginCollectionItem( "nameofitem")というmvc1および2Htmlヘルパーを見ましたが、それはもう存在しません。

良いアイデアはありますか?

4

1 に答える 1

0

@Html.EditorFor() の代わりに @Html.TextBox() を使用してみてください

@Html.TextBox を使用すると、名前と値を渡すことができます

@Html.TextBox("WhateverNameYouWant", Model.Blocks[blockIndex])

于 2013-01-10T14:02:52.940 に答える